package jetbrains.mps.testHybridEditor.diagram.generated.editor; /*Generated by MPS */ import jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.openapi.PaletteToggleAction; import jetbrains.jetpad.projectional.view.ViewTrait; import jetbrains.mps.nodeEditor.cells.jetpad.DiagramCell; import org.jetbrains.mps.openapi.model.SNode; import javax.swing.Icon; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.ide.icons.IconManager; import jetbrains.jetpad.projectional.view.ViewTraitBuilder; import jetbrains.jetpad.projectional.view.ViewEvents; import jetbrains.jetpad.projectional.view.ViewEventHandler; import jetbrains.jetpad.event.MouseEvent; import jetbrains.jetpad.projectional.view.View; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.internal.collections.runtime.ListSequence; public class MyBlockCreationAction implements PaletteToggleAction { private ViewTrait myTrait; private DiagramCell myDiagramCell; private SNode myMetaBlock; private String myText; private Icon myIcon; public MyBlockCreationAction(DiagramCell diagramCell, final SNode block) { myDiagramCell = diagramCell; myMetaBlock = block; myDiagramCell.getContext().getRepository().getModelAccess().runReadAction(new Runnable() { public void run() { myText = SPropertyOperations.getString(block, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); myIcon = IconManager.getIconFor(myMetaBlock); } }); } protected ViewTrait getTrait() { if (myTrait == null) { myTrait = new ViewTraitBuilder().on(ViewEvents.MOUSE_PRESSED, new ViewEventHandler<MouseEvent>() { public void handle(View view, final MouseEvent event) { if (view.viewAt(event.location()) != view) { return; } if (!(view.focused().get())) { view.container().focusedView().set(view); } myDiagramCell.getContext().getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { SNode newBlockInstance = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")); SLinkOperations.setTarget(newBlockInstance, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec4404a9L, "metaBlock"), myMetaBlock); SPropertyOperations.set(newBlockInstance, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec440489L, "x"), "" + (event.x())); SPropertyOperations.set(newBlockInstance, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec44048aL, "y"), "" + (event.y())); ListSequence.fromList(SLinkOperations.getChildren(((SNode) myDiagramCell.getSNode()), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec43f4b6L, "newBlocks"))).addElement(newBlockInstance); } }); event.consume(); } }).build(); } return myTrait; } public void onClick() { myDiagramCell.setExternalTrait(getTrait()); } public Icon getIcon() { return myIcon; } public String getText() { return myText; } }