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.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.ide.platform.refactoring.StringChooserDialog; import jetbrains.mps.baseLanguage.util.plugin.refactorings.ConvertAnonymousRefactoring; public class ConvertAnonymousClass implements MoveNodesAction { public static class ConvertAnonymousClass_extension extends Extension.Default<MoveNodesAction> { public ConvertAnonymousClass_extension() { super("jetbrains.mps.ide.platform.MoveNodesActionEP"); } public MoveNodesAction get() { return new ConvertAnonymousClass(); } } public String getName() { return "Convert Anonymous Class"; } 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, 0x1107e0cb103L, "jetbrains.mps.baseLanguage.structure.AnonymousClass")) && (SNodeOperations.getNodeAncestor(ListSequence.fromList(nodes).first(), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, "jetbrains.mps.baseLanguage.structure.Classifier"), false, false) != null); } }); 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, 0x1107e0cb103L, "jetbrains.mps.baseLanguage.structure.AnonymousClass")); final Wrappers._T<String> classifierName = new Wrappers._T<String>(); project.getRepository().getModelAccess().runReadAction(new Runnable() { public void run() { classifierName.value = SPropertyOperations.getString(SLinkOperations.getTarget(target, MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x1107e0cb103L, 0x1107e0fd2a0L, "classifier")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } }); final String newName = StringChooserDialog.getString(project.getProject(), "Convert Anonymous Class", "Class Name", "My" + classifierName.value); if (newName == null) { return; } project.getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { new ConvertAnonymousRefactoring(target, newName).doRefactor(); } }); } }