package jetbrains.mps.ide.refactoring; /*Generated by MPS */ import jetbrains.mps.ide.platform.refactoring.RefactoringDialog; import com.intellij.refactoring.RefactoringBundle; import jetbrains.mps.project.MPSProject; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.annotations.NotNull; import jetbrains.mps.ide.hierarchy.ChildHierarchyTreeNode; import javax.swing.JOptionPane; import jetbrains.mps.smodel.ModelAccessHelper; import jetbrains.mps.util.Computable; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.annotations.Nullable; import javax.swing.JComponent; public class MoveUpDialog extends RefactoringDialog { private static String REFACTORING_NAME = RefactoringBundle.message("move.title"); private final MPSProject myProject; private SNode myTarget; private NodeHierarchyChooser myPanel; private SNode myConcept; private String myNodeType; public MoveUpDialog(@NotNull MPSProject mpsProject, SNode target, String nodeType) { super(mpsProject.getProject(), true); myProject = mpsProject; myTarget = target; myNodeType = nodeType; init(); setTitle(REFACTORING_NAME + " " + nodeType); } @Override protected void doRefactoringAction() { final Object treeNode = myPanel.getSelectedObject(); if (treeNode == null || !(treeNode instanceof ChildHierarchyTreeNode)) { JOptionPane.showMessageDialog(this.myPanel, "Choose Concept or Interface", this.myNodeType + " can't be moved", JOptionPane.INFORMATION_MESSAGE); return; } myConcept = new ModelAccessHelper(myProject.getModelAccess()).runReadAction(new Computable<SNode>() { public SNode compute() { return SNodeOperations.as(((ChildHierarchyTreeNode) treeNode).getNodeReference().resolve(myProject.getRepository()), MetaAdapterFactory.getConcept(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103553c5ffL, "jetbrains.mps.lang.structure.structure.AbstractConceptDeclaration")); } }); super.doRefactoringAction(); } @Nullable @Override protected JComponent createCenterPanel() { return myPanel = new NodeHierarchyChooser(myProject, myTarget); } public static SNode getConcept(@NotNull MPSProject project, SNode target, String nodeType) { MoveUpDialog dialog = new MoveUpDialog(project, target, nodeType); dialog.show(); return dialog.myConcept; } }