package jetbrains.mps.testHybridEditor.diagram.generated.editor; /*Generated by MPS */ import jetbrains.mps.editor.runtime.descriptor.AbstractEditorBuilder; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.openapi.editor.EditorContext; import jetbrains.mps.openapi.editor.cells.EditorCell; import jetbrains.mps.nodeEditor.cells.EditorCell_Collection; import jetbrains.mps.nodeEditor.cellLayout.CellLayout_Vertical; import jetbrains.mps.nodeEditor.cellLayout.CellLayout_Horizontal; import jetbrains.mps.nodeEditor.cells.EditorCell_Constant; import jetbrains.mps.nodeEditor.cellProviders.CellProviderWithRole; import jetbrains.mps.lang.editor.cellProviders.PropertyCellProvider; import jetbrains.mps.nodeEditor.EditorManager; import jetbrains.mps.nodeEditor.cells.jetpad.DiagramCell; import jetbrains.mps.nodeEditor.cellMenu.CompositeSubstituteInfo; import jetbrains.mps.nodeEditor.cellMenu.BasicCellContext; import jetbrains.mps.nodeEditor.cellMenu.SubstituteInfoPartExt; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.smodel.action.SNodeFactoryOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.jetpad.mapper.Mapper; import jetbrains.jetpad.projectional.diagram.view.DiagramView; import jetbrains.jetpad.mapper.Synchronizers; import jetbrains.jetpad.mapper.MapperFactory; import jetbrains.jetpad.projectional.view.View; import jetbrains.mps.nodeEditor.cells.jetpad.BlockCell; import jetbrains.jetpad.projectional.diagram.view.Connection; import jetbrains.mps.nodeEditor.cells.jetpad.ConnectorCell; import jetbrains.jetpad.model.property.WritableProperty; import jetbrains.jetpad.projectional.view.ViewContainer; import jetbrains.mps.lang.editor.diagram.runtime.jetpad.views.DiagramDecoratorView; import java.util.Set; import java.util.HashSet; import java.util.ListIterator; import jetbrains.jetpad.projectional.diagram.view.ConnectionRoutingView; import jetbrains.jetpad.projectional.diagram.layout.OrthogonalRouter; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.ui.DiagramPalette; import jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.impl.DiagramTraitButton; /*package*/ class Diagram_diagram_EditorBuilder_a extends AbstractEditorBuilder { @NotNull private SNode myNode; public Diagram_diagram_EditorBuilder_a(@NotNull EditorContext context, @NotNull SNode node) { super(context); myNode = node; } @NotNull @Override public SNode getNode() { return myNode; } /*package*/ EditorCell createCell() { return createCollection_32adaa_a(); } private EditorCell createCollection_32adaa_a() { EditorCell_Collection editorCell = new EditorCell_Collection(getEditorContext(), myNode, new CellLayout_Vertical()); editorCell.setCanBeSynchronized(true); editorCell.setCellId("Collection_32adaa_a"); editorCell.setBig(true); editorCell.setCellContext(getCellFactory().getCellContext()); editorCell.addEditorCell(createCollection_32adaa_a0()); editorCell.addEditorCell(createConstant_32adaa_b0()); editorCell.addEditorCell(createDiagram_32adaa_c0()); editorCell.addEditorCell(createConstant_32adaa_d0()); editorCell.addEditorCell(createDiagram_32adaa_e0()); return editorCell; } private EditorCell createCollection_32adaa_a0() { EditorCell_Collection editorCell = new EditorCell_Collection(getEditorContext(), myNode, new CellLayout_Horizontal()); editorCell.setCellId("Collection_32adaa_a0"); editorCell.addEditorCell(createConstant_32adaa_a0a()); editorCell.addEditorCell(createProperty_32adaa_b0a()); return editorCell; } private EditorCell createConstant_32adaa_a0a() { EditorCell_Constant editorCell = new EditorCell_Constant(getEditorContext(), myNode, "diagram"); editorCell.setCellId("Constant_32adaa_a0a"); editorCell.setDefaultText(""); return editorCell; } private EditorCell createProperty_32adaa_b0a() { CellProviderWithRole provider = new PropertyCellProvider(myNode, getEditorContext()); provider.setRole("name"); provider.setNoTargetText("<no name>"); EditorCell editorCell; editorCell = provider.createEditorCell(getEditorContext()); editorCell.setCellId("property_name"); editorCell.setSubstituteInfo(provider.createDefaultSubstituteInfo()); SNode attributeConcept = provider.getRoleAttribute(); if (attributeConcept != null) { EditorManager manager = EditorManager.getInstanceFromContext(getEditorContext()); return manager.createNodeRoleAttributeCell(attributeConcept, provider.getRoleAttributeKind(), editorCell); } else return editorCell; } private EditorCell createConstant_32adaa_b0() { EditorCell_Constant editorCell = new EditorCell_Constant(getEditorContext(), myNode, "version-1:"); editorCell.setCellId("Constant_32adaa_b0"); editorCell.setDefaultText(""); return editorCell; } private EditorCell createDiagram_32adaa_c0() { DiagramCell editorCell = new Diagram_diagram_EditorBuilder_a.DiagramCellImpl_32adaa_c0(getEditorContext(), myNode); editorCell.setCellId("Diagram_32adaa_c0"); return editorCell; } private class DiagramCellImpl_32adaa_c0 extends DiagramCell { private DiagramCellImpl_32adaa_c0(EditorContext editorContext, SNode node) { super(editorContext, node); setSubstituteInfo(new CompositeSubstituteInfo(editorContext, new BasicCellContext(node), new SubstituteInfoPartExt[]{createNewDiagramNodeActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, "jetbrains.mps.testHybridEditor.structure.Block"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fd8L, "blocks"), new _FunctionTypes._void_P3_E0<SNode, Integer, Integer>() { public void invoke(SNode node, Integer x, Integer y) { SNodeFactoryOperations.addNewChild(node, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0xa10615a65702ffeL, "inputPorts"), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort"))); SNodeFactoryOperations.addNewChild(node, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0xa10615a65703000L, "outputPorts"), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort"))); SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0x57239d35e26cf167L, "x"), "" + (x)); SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0x57239d35e26cf357L, "y"), "" + (y)); } }), createNewDiagramConnectorActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, "jetbrains.mps.testHybridEditor.structure.Connector"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fdaL, "connectors"), new _FunctionTypes._return_P4_E0<Boolean, SNode, Object, SNode, Object>() { public Boolean invoke(SNode from, Object fromId, SNode to, Object toId) { return SNodeOperations.isInstanceOf(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort")) && SNodeOperations.isInstanceOf(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort")); } }, new _FunctionTypes._void_P5_E0<SNode, SNode, Object, SNode, Object>() { public void invoke(SNode node, SNode from, Object fromId, SNode to, Object toId) { SLinkOperations.setTarget(node, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, 0xa10615a65703014L, "outputPort"), SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort"))); SLinkOperations.setTarget(node, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, 0xa10615a65703018L, "inputPort"), SNodeOperations.cast(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort"))); } })})); synchronize(); } protected SubstituteInfoPartExt[] createPaletteBlockSubstituteInfoPartExts() { return new SubstituteInfoPartExt[]{createNewDiagramNodeActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, "jetbrains.mps.testHybridEditor.structure.Block"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fd8L, "blocks"), new _FunctionTypes._void_P3_E0<SNode, Integer, Integer>() { public void invoke(SNode node, Integer x, Integer y) { SNodeFactoryOperations.addNewChild(node, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0xa10615a65702ffeL, "inputPorts"), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort"))); SNodeFactoryOperations.addNewChild(node, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0xa10615a65703000L, "outputPorts"), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort"))); SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0x57239d35e26cf167L, "x"), "" + (x)); SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702f98L, 0x57239d35e26cf357L, "y"), "" + (y)); } })}; } protected SubstituteInfoPartExt[] createPaletteConnectorSubstituteInfoPartExts() { return new SubstituteInfoPartExt[]{createNewDiagramConnectorActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, "jetbrains.mps.testHybridEditor.structure.Connector"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fdaL, "connectors"), new _FunctionTypes._return_P4_E0<Boolean, SNode, Object, SNode, Object>() { public Boolean invoke(SNode from, Object fromId, SNode to, Object toId) { return SNodeOperations.isInstanceOf(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort")) && SNodeOperations.isInstanceOf(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort")); } }, new _FunctionTypes._void_P5_E0<SNode, SNode, Object, SNode, Object>() { public void invoke(SNode node, SNode from, Object fromId, SNode to, Object toId) { SLinkOperations.setTarget(node, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, 0xa10615a65703014L, "outputPort"), SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fbfL, "jetbrains.mps.testHybridEditor.structure.OutputPort"))); SLinkOperations.setTarget(node, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fa1L, 0xa10615a65703018L, "inputPort"), SNodeOperations.cast(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702fb4L, "jetbrains.mps.testHybridEditor.structure.InputPort"))); } })}; } public Mapper<SNode, DiagramView> createMapper(SNode node) { return new Mapper<SNode, DiagramView>(node, createDiagramView()) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forObservableRole(this, myBlocks, getTarget().itemsView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((BlockCell) getDirectChildCell(node)).createMapper(); } })); configuration.add(Synchronizers.forObservableRole(this, myConnectors, getTarget().connections, new MapperFactory<SNode, Connection>() { public Mapper<? extends SNode, ? extends Connection> createMapper(SNode node) { return ((ConnectorCell) getDirectChildCell(node)).createMapper(); } })); configuration.add(Synchronizers.forProperty(myIsShowingDragFeedBack, new WritableProperty<Boolean>() { public void set(Boolean showDragFeedBack) { if (showDragFeedBack) { getTarget().connections.add(myDragConnection); } else { getTarget().connections.remove(myDragConnection); } } })); configuration.add(Synchronizers.forProperty(mySelectedItem, new WritableProperty<Boolean>() { public void set(Boolean isSelected) { ViewContainer viewContainer = getTarget().container(); if (viewContainer != null) { if (isSelected && !(viewContainer.root().focused().get())) { viewContainer.focusedView().set(viewContainer.root()); } else if (!(isSelected) && viewContainer.root().focused().get()) { viewContainer.focusedView().set(null); } } } })); } }; } public Mapper<SNode, DiagramDecoratorView> createDecorationMapper(SNode node) { return new Mapper<SNode, DiagramDecoratorView>(getSNode(), new DiagramDecoratorView()) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forObservableRole(this, myBlocks, getTarget().itemsDecotatorView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((BlockCell) getDirectChildCell(node)).createDecorationMapper(); } })); configuration.add(Synchronizers.forObservableRole(this, myConnectors, getTarget().connectorsDecotatorView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((ConnectorCell) getDirectChildCell(node)).createDecorationMapper(); } })); } }; } public void synchronize() { Set<SNode> existingBlocks = new HashSet<SNode>(myBlocks); ListIterator<SNode> blocksIterator = myBlocks.listIterator(); Set<SNode> existingConnectors = new HashSet<SNode>(myConnectors); ListIterator<SNode> connectorsIterator = myConnectors.listIterator(); syncDiagramElements(SLinkOperations.getChildren(getSNode(), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fd8L, "blocks")), blocksIterator, existingBlocks, connectorsIterator, existingConnectors); syncDiagramElements(SLinkOperations.getChildren(getSNode(), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0xa10615a65702fdaL, "connectors")), blocksIterator, existingBlocks, connectorsIterator, existingConnectors); purgeTailNodes(blocksIterator); purgeTailNodes(connectorsIterator); } private DiagramView createDiagramView() { ConnectionRoutingView diagramView = new ConnectionRoutingView(new OrthogonalRouter()); return diagramView; } } private EditorCell createConstant_32adaa_d0() { EditorCell_Constant editorCell = new EditorCell_Constant(getEditorContext(), myNode, "version-2:"); editorCell.setCellId("Constant_32adaa_d0"); editorCell.setDefaultText(""); return editorCell; } private EditorCell createDiagram_32adaa_e0() { DiagramCell editorCell = new Diagram_diagram_EditorBuilder_a.DiagramCellImpl_32adaa_e0(getEditorContext(), myNode); editorCell.setCellId("Diagram_32adaa_e0"); return editorCell; } private class DiagramCellImpl_32adaa_e0 extends DiagramCell { private DiagramCellImpl_32adaa_e0(EditorContext editorContext, SNode node) { super(editorContext, node); setSubstituteInfo(new CompositeSubstituteInfo(editorContext, new BasicCellContext(node), new SubstituteInfoPartExt[]{createNewDiagramNodeActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec43f4b6L, "newBlocks"), new _FunctionTypes._void_P3_E0<SNode, Integer, Integer>() { public void invoke(SNode node, Integer x, Integer y) { SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), "block"); SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec440489L, "x"), "" + (x)); SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec44048aL, "y"), "" + (y)); } }), createNewDiagramConnectorActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec4425e0L, "newConnectors"), new _FunctionTypes._return_P4_E0<Boolean, SNode, Object, SNode, Object>() { public Boolean invoke(SNode from, Object fromId, SNode to, Object toId) { return SNodeOperations.isInstanceOf(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && fromId instanceof SNode && SNodeOperations.isInstanceOf(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && toId instanceof SNode && eq_voju58_a0a0a0a0d1a2a0a1a0r(SNodeOperations.getContainingLink(((SNode) toId)), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec40c2c8L, 0x20a804e2ec410486L, "inMetaPorts")); } }, new _FunctionTypes._void_P5_E0<SNode, SNode, Object, SNode, Object>() { public void invoke(SNode node, SNode from, Object fromId, SNode to, Object toId) { SNode connector = SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance")); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); final SNode port = ((SNode) fromId); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), ListSequence.fromList(SLinkOperations.getChildren(SLinkOperations.getTarget(SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec4404a9L, "metaBlock")), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec40c2c8L, 0x2cd0b06754c8ec0cL, "outMetaPorts"))).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return eq_voju58_a0a0a0a0a2a3a0a0e1a2a0a1a0r(it, port); } })); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), (SNode) toId); } })})); setPalette(new Diagram_diagram_EditorBuilder_a.DiagramCellImpl_32adaa_e0.DiagramPaletteImpl_32adaa_a4a(this)); synchronize(); } protected SubstituteInfoPartExt[] createPaletteBlockSubstituteInfoPartExts() { return new SubstituteInfoPartExt[]{createNewDiagramNodeActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec43f4b6L, "newBlocks"), new _FunctionTypes._void_P3_E0<SNode, Integer, Integer>() { public void invoke(SNode node, Integer x, Integer y) { SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), "block"); SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec440489L, "x"), "" + (x)); SPropertyOperations.set(SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec44048aL, "y"), "" + (y)); } })}; } protected SubstituteInfoPartExt[] createPaletteConnectorSubstituteInfoPartExts() { return new SubstituteInfoPartExt[]{createNewDiagramConnectorActions(getSNode(), MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance"), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec4425e0L, "newConnectors"), new _FunctionTypes._return_P4_E0<Boolean, SNode, Object, SNode, Object>() { public Boolean invoke(SNode from, Object fromId, SNode to, Object toId) { return SNodeOperations.isInstanceOf(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && fromId instanceof SNode && SNodeOperations.isInstanceOf(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")) && toId instanceof SNode && eq_voju58_a0a0a0a0d0a0a0d71(SNodeOperations.getContainingLink(((SNode) toId)), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec40c2c8L, 0x20a804e2ec410486L, "inMetaPorts")); } }, new _FunctionTypes._void_P5_E0<SNode, SNode, Object, SNode, Object>() { public void invoke(SNode node, SNode from, Object fromId, SNode to, Object toId) { SNode connector = SNodeOperations.cast(node, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, "jetbrains.mps.testHybridEditor.structure.ConnectorInstance")); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); final SNode port = ((SNode) fromId); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c0L, "source")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), ListSequence.fromList(SLinkOperations.getChildren(SLinkOperations.getTarget(SNodeOperations.cast(from, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec4404a9L, "metaBlock")), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec40c2c8L, 0x2cd0b06754c8ec0cL, "outMetaPorts"))).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return eq_voju58_a0a0a0a0a2a3a0a0e0a0a0d71(it, port); } })); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bcL, "block"), SNodeOperations.cast(to, MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"))); SLinkOperations.setTarget(SLinkOperations.getTarget(connector, MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec441516L, 0x49664459198225c6L, "target")), MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x4966445919822461L, 0x49664459198225bdL, "metaPort"), (SNode) toId); } })}; } public Mapper<SNode, DiagramView> createMapper(SNode node) { return new Mapper<SNode, DiagramView>(node, createDiagramView()) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forObservableRole(this, myBlocks, getTarget().itemsView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((BlockCell) getDirectChildCell(node)).createMapper(); } })); configuration.add(Synchronizers.forObservableRole(this, myConnectors, getTarget().connections, new MapperFactory<SNode, Connection>() { public Mapper<? extends SNode, ? extends Connection> createMapper(SNode node) { return ((ConnectorCell) getDirectChildCell(node)).createMapper(); } })); configuration.add(Synchronizers.forProperty(myIsShowingDragFeedBack, new WritableProperty<Boolean>() { public void set(Boolean showDragFeedBack) { if (showDragFeedBack) { getTarget().connections.add(myDragConnection); } else { getTarget().connections.remove(myDragConnection); } } })); configuration.add(Synchronizers.forProperty(mySelectedItem, new WritableProperty<Boolean>() { public void set(Boolean isSelected) { ViewContainer viewContainer = getTarget().container(); if (viewContainer != null) { if (isSelected && !(viewContainer.root().focused().get())) { viewContainer.focusedView().set(viewContainer.root()); } else if (!(isSelected) && viewContainer.root().focused().get()) { viewContainer.focusedView().set(null); } } } })); } }; } public Mapper<SNode, DiagramDecoratorView> createDecorationMapper(SNode node) { return new Mapper<SNode, DiagramDecoratorView>(getSNode(), new DiagramDecoratorView()) { @Override protected void registerSynchronizers(Mapper.SynchronizersConfiguration configuration) { super.registerSynchronizers(configuration); configuration.add(Synchronizers.forObservableRole(this, myBlocks, getTarget().itemsDecotatorView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((BlockCell) getDirectChildCell(node)).createDecorationMapper(); } })); configuration.add(Synchronizers.forObservableRole(this, myConnectors, getTarget().connectorsDecotatorView.children(), new MapperFactory<SNode, View>() { public Mapper<? extends SNode, ? extends View> createMapper(SNode node) { return ((ConnectorCell) getDirectChildCell(node)).createDecorationMapper(); } })); } }; } public void synchronize() { Set<SNode> existingBlocks = new HashSet<SNode>(myBlocks); ListIterator<SNode> blocksIterator = myBlocks.listIterator(); Set<SNode> existingConnectors = new HashSet<SNode>(myConnectors); ListIterator<SNode> connectorsIterator = myConnectors.listIterator(); syncDiagramElements(SLinkOperations.getChildren(getSNode(), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec43f4b6L, "newBlocks")), blocksIterator, existingBlocks, connectorsIterator, existingConnectors); syncDiagramElements(SLinkOperations.getChildren(getSNode(), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec4425e0L, "newConnectors")), blocksIterator, existingBlocks, connectorsIterator, existingConnectors); purgeTailNodes(blocksIterator); purgeTailNodes(connectorsIterator); } private DiagramView createDiagramView() { ConnectionRoutingView diagramView = new ConnectionRoutingView(new OrthogonalRouter()); return diagramView; } private class DiagramPaletteImpl_32adaa_a4a extends DiagramPalette { private DiagramPaletteImpl_32adaa_a4a(DiagramCell diagramCell) { super(diagramCell); addPaletteElement(new MyMainActionGroup(diagramCell)); addPaletteElement(new DiagramTraitButton(diagramCell)); createPalette(); } } } private static boolean eq_voju58_a0a0a0a0d1a2a0a1a0r(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean eq_voju58_a0a0a0a0a2a3a0a0e1a2a0a1a0r(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean eq_voju58_a0a0a0a0d0a0a0d71(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean eq_voju58_a0a0a0a0a2a3a0a0e0a0a0d71(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } }