]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/ConnectionRequest2.java
Bringing layers back to life
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / adapter / ConnectionRequest2.java
index 36a01b54c641a0e1a6a67dac6dd2fbec481aad7e..a19bc3dad141921dae5a46e67277e611406c672a 100644 (file)
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.simantics.diagram.adapter;
 
+import java.util.List;
+
 import org.simantics.db.AsyncReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.common.primitiverequest.Adapter;
@@ -19,6 +21,7 @@ import org.simantics.db.procedure.AsyncProcedure;
 import org.simantics.diagram.synchronization.ErrorHandler;
 import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.diagram.IDiagram;
+import org.simantics.g2d.diagram.handler.SubstituteElementClass;
 import org.simantics.g2d.element.ElementClass;
 import org.simantics.g2d.element.IElement;
 import org.simantics.scl.runtime.tuple.Tuple3;
@@ -75,7 +78,13 @@ public class ConnectionRequest2 extends BaseRequest2<Resource, Tuple3> {
                             }
 
                             @Override
-                            public void execute(AsyncReadGraph graph, final ElementClass ec) {
+                            public void execute(AsyncReadGraph graph, ElementClass mutableClazz) {
+
+                                List<SubstituteElementClass> substitutes = diagram.getDiagramClass().getItemsByClass(SubstituteElementClass.class);
+                                for (SubstituteElementClass subs : substitutes) {
+                                    mutableClazz = subs.substitute(diagram, mutableClazz);
+                                }
+                                final ElementClass ec = mutableClazz;
 
                                 graph.asyncRequest(new SpawnRequest(canvas, ec, data), new TransientCacheAsyncListener<IElement>() {