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 javax.swing.Icon; import jetbrains.mps.smodel.ModelAccess; import jetbrains.mps.ide.icons.IconManager; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; 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.nodeEditor.cells.jetpad.JetpadUtils; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import org.jetbrains.mps.openapi.model.SNode; 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 MyConnectorCreationAction implements PaletteToggleAction { private ViewTrait myTrait; private DiagramCell myDiagramCell; private String myText; private Icon myIcon; public MyConnectorCreationAction(DiagramCell diagramCell) { myDiagramCell = diagramCell; ModelAccess.instance().runReadAction(new Runnable() { public void run() { myText = "Connector"; myIcon = IconManager.getIcon(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance")); } }); } protected ViewTrait getTrait() { if (myTrait == null) { myTrait = new ViewTraitBuilder().on(ViewEvents.MOUSE_DRAGGED, new ViewEventHandler<MouseEvent>() { @Override public void handle(View view, MouseEvent event) { if (!(myDiagramCell.hasConnectionDragFeedback())) { View sourceView = view.viewAt(event.location()); if (sourceView == null || !(check_lbjacb_a0a1a0a0a0b0a0a0a0a0f(sourceView.prop(JetpadUtils.CONNECTION_SOURCE).get()))) { return; } myDiagramCell.showConnectionDragFeedback(sourceView); } myDiagramCell.updateConnectionDragFeedback(event.location()); } }).on(ViewEvents.MOUSE_RELEASED, new ViewEventHandler<MouseEvent>() { @Override public void handle(View view, MouseEvent event) { if (!(myDiagramCell.hasConnectionDragFeedback())) { return; } myDiagramCell.hideConnectionDragFeedback(); final SRepository repo = myDiagramCell.getContext().getRepository(); final DiagramCell.ConnectionInfo connectionInfo = myDiagramCell.getConnectionInfo(); final Wrappers._boolean result = new Wrappers._boolean(false); repo.getModelAccess().runReadAction(new Runnable() { public void run() { if (connectionInfo.isValid() && SNodeOperations.isInstanceOf(connectionInfo.getFromNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && connectionInfo.getFromId() instanceof SNode && SNodeOperations.isInstanceOf(connectionInfo.getToNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && connectionInfo.getToId() instanceof SNode && eq_lbjacb_a0a0a0a0a0a5a0a0b0a0a0a0a5(SNodeOperations.getContainingLink(((SNode) connectionInfo.getToId())), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec40c2c8L, 0x20a804e2ec410486L, "inMetaPorts"))) { result.value = true; } } }); if (!(result.value)) { return; } repo.getModelAccess().executeCommand(new Runnable() { public void run() { SNode connectorInstance = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance")); SLinkOperations.setTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source"), SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, "jetbrains.mps.testHybridEditor.structure.ConnectorEndInstance"))); SLinkOperations.setTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target"), SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, "jetbrains.mps.testHybridEditor.structure.ConnectorEndInstance"))); SLinkOperations.setTarget(SLinkOperations.getTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(connectionInfo.getFromNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); SLinkOperations.setTarget(SLinkOperations.getTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), ((SNode) connectionInfo.getFromId())); SLinkOperations.setTarget(SLinkOperations.getTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(connectionInfo.getToNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); SLinkOperations.setTarget(SLinkOperations.getTarget(connectorInstance, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), ((SNode) connectionInfo.getToId())); ListSequence.fromList(SLinkOperations.getChildren(((SNode) myDiagramCell.getSNode()), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec4425e0L, "newConnectors"))).addElement(connectorInstance); } }); event.consume(); } }).build(); } return myTrait; } public void onClick() { myDiagramCell.setExternalTrait(getTrait()); } public Icon getIcon() { return myIcon; } public String getText() { return myText; } private static boolean check_lbjacb_a0a1a0a0a0b0a0a0a0a0f(Boolean checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.booleanValue(); } return false; } private static boolean eq_lbjacb_a0a0a0a0a0a5a0a0b0a0a0a0a5(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } }