]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java
Support selection of experiment run for scene graph provider
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / elements / DiagramNodeUtil.java
index 467e4e349d5f494bf428ae2f1c1e3601c714e83f..671c317ec4a6624f13f86d48b89e242278efc72c 100644 (file)
@@ -13,6 +13,7 @@ import org.simantics.db.common.request.Queries;
 import org.simantics.db.common.request.ResourceRead;
 import org.simantics.db.common.request.WriteRequest;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.Variable;
 import org.simantics.db.request.Read;
 import org.simantics.db.service.TransactionSupport;
 import org.simantics.db.service.VirtualGraphSupport;
@@ -26,6 +27,7 @@ import org.simantics.g2d.diagram.handler.DataElementMap;
 import org.simantics.g2d.element.ElementHints;
 import org.simantics.g2d.element.IElement;
 import org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider;
+import org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider2;
 import org.simantics.modeling.ModelingResources;
 import org.simantics.scenegraph.INode;
 import org.simantics.scenegraph.adapters.ISceneGraphProvider;
@@ -180,10 +182,19 @@ public class DiagramNodeUtil {
     }
 
     public static ICanvasSceneGraphProvider loadSceneGraphProviderForDiagram(ICanvasContext context, Resource model, Resource diagram, String diagramRVI) throws DatabaseException, InterruptedException {
+        return loadSceneGraphProviderForDiagram(context, model, diagram, diagramRVI, null);
+    }
+
+    public static ICanvasSceneGraphProvider loadSceneGraphProviderForDiagram(ICanvasContext context, Resource model, Resource diagram, String diagramRVI, Variable run) throws DatabaseException, InterruptedException {
         String modelURI = Simantics.getSession().syncRequest(Queries.uri(model));
         ISceneGraphProvider provider = Simantics.getSession().syncRequest( Queries.adapt( diagram, ISceneGraphProvider.class ) );
         ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider;
-        cp.initializeSceneGraph(context, modelURI, diagramRVI);
+        if(cp instanceof ICanvasSceneGraphProvider2) {
+            ((ICanvasSceneGraphProvider2)cp).initializeSceneGraph(context, modelURI, diagramRVI, run);
+            
+        } else {
+            cp.initializeSceneGraph(context, modelURI, diagramRVI);
+        }
         NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), context.getSceneGraph());
         Simantics.getSession().getService(TransactionSupport.class).waitCompletion();
         return cp;