package jetbrains.mps.ide.java.actions; /*Generated by MPS */ import jetbrains.mps.ide.platform.actions.core.MoveNodesAction; import jetbrains.mps.smodel.structure.Extension; import jetbrains.mps.project.MPSProject; import java.util.List; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.ide.platform.refactoring.MoveNodeDialog; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.ide.platform.actions.core.MoveNodesUtil; import jetbrains.mps.internal.collections.runtime.MapSequence; import java.util.HashMap; import java.util.ArrayList; import jetbrains.mps.ide.platform.refactoring.NodeLocation; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.baseLanguage.util.plugin.refactorings.MemberInsertingUtils; public class MoveStaticField implements MoveNodesAction { public static class MoveStaticField_extension extends Extension.Default<MoveNodesAction> { public MoveStaticField_extension() { super("jetbrains.mps.ide.platform.MoveNodesActionEP"); } public MoveNodesAction get() { return new MoveStaticField(); } } public String getName() { return "Move Static Field"; } public boolean isApplicable(MPSProject project, final List<SNode> nodes) { final Wrappers._boolean result = new Wrappers._boolean(); project.getRepository().getModelAccess().runReadAction(new Runnable() { public void run() { result.value = ListSequence.fromList(nodes).count() == 1 && SNodeOperations.isInstanceOf(ListSequence.fromList(nodes).first(), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93c84351fL, "jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration")); } }); return result.value; } public void execute(final MPSProject project, List<SNode> nodes) { final SNode target = SNodeOperations.cast(ListSequence.fromList(nodes).first(), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf93c84351fL, "jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration")); final SNode whereToMove = MoveNodeDialog.getSelectedObject(project.getProject(), target, new MoveNodeDialog.NodeFilter("Select class to move: refactoring can't be applied to selected node") { @Override public boolean check(SNode selectedObject, SNode nodeToMove, SModel modelOfSelectedObject) { return SNodeOperations.isInstanceOf(selectedObject, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, "jetbrains.mps.baseLanguage.structure.Classifier")) && !(ListSequence.fromList(SNodeOperations.getNodeAncestors(nodeToMove, null, false)).contains(selectedObject)); } }); if (whereToMove == null) { return; } project.getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { MoveNodesUtil.moveTo(project, getName(), MapSequence.<MoveNodesUtil.NodeProcessor, List<SNode>>fromMapAndKeysArray(new HashMap<MoveNodesUtil.NodeProcessor, List<SNode>>(), new MoveNodesUtil.NodeCreatingProcessor(new MoveStaticField.NodeLocationClassifierMember(SNodeOperations.cast(whereToMove, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, "jetbrains.mps.baseLanguage.structure.Classifier"))), project)).withValues(ListSequence.fromListAndArray(new ArrayList<SNode>(), target))); } }); } public static class NodeLocationClassifierMember extends NodeLocation.NodeLocationChild { public NodeLocationClassifierMember(SNode parent) { super(parent, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, 0x4a9a46de59132803L, "member")); } @Override public void insertNode(SRepository repository, SNode nodeToMove) { SNode oldParent = nodeToMove.getParent(); if (oldParent != null) { oldParent.removeChild(nodeToMove); } MemberInsertingUtils.insertClassifierMemberInBestPlace(SNodeOperations.cast(getNode().resolve(repository), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, "jetbrains.mps.baseLanguage.structure.Classifier")), SNodeOperations.cast(nodeToMove, MetaAdapterFactory.getInterfaceConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x112574373bdL, "jetbrains.mps.baseLanguage.structure.ClassifierMember"))); } } }