X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FDiagramNodeUtil.java;fp=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FDiagramNodeUtil.java;h=671c317ec4a6624f13f86d48b89e242278efc72c;hb=2bf1a3a2c26cf2a1ff4cd5b56971ef6a0ff10015;hp=467e4e349d5f494bf428ae2f1c1e3601c714e83f;hpb=e9110dcc9cec82ed9a1028a324c24591afe698fc;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java index 467e4e349..671c317ec 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java @@ -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;