X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FDiagramNodeUtil.java;h=467e4e349d5f494bf428ae2f1c1e3601c714e83f;hb=HEAD;hp=859154d0b6be2e3003e1637e7c643526d2c6fe81;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;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 859154d0b..467e4e349 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 @@ -14,6 +14,7 @@ import org.simantics.db.common.request.ResourceRead; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.exception.DatabaseException; import org.simantics.db.request.Read; +import org.simantics.db.service.TransactionSupport; import org.simantics.db.service.VirtualGraphSupport; import org.simantics.diagram.stubs.DiagramResource; import org.simantics.diagram.ui.DiagramModelHints; @@ -43,7 +44,7 @@ import org.simantics.simulation.ontology.SimulationResource; public class DiagramNodeUtil { public static ICanvasContext getCanvasContext(IG2DNode node) { - G2DSceneGraph sg = NodeUtil.getPossibleRootNode(node); + G2DSceneGraph sg = node.getRootNode2D(); if (sg == null) return null; Component rootPane = sg.getRootPane(); @@ -55,7 +56,7 @@ public class DiagramNodeUtil { } public static ICanvasContext getPossibleCanvasContext(IG2DNode node) { - G2DSceneGraph sg = NodeUtil.getPossibleRootNode(node); + G2DSceneGraph sg = node.getRootNode2D(); if (sg == null) return null; Component rootPane = sg.getRootPane(); @@ -116,7 +117,7 @@ public class DiagramNodeUtil { }; } - public static ICanvasSceneGraphProvider loadSceneGraphProvider(Resource model, Resource diagram, String diagramRVI) throws DatabaseException, InterruptedException { + public static ICanvasSceneGraphProvider loadSceneGraphProvider(Resource model, Resource diagram, String diagramRVI) throws DatabaseException { Resource composite = Simantics.getSession().syncRequest( diagramToComposite(diagram) ); return loadSceneGraphProviderForComposite(model, composite, diagramRVI); } @@ -146,33 +147,19 @@ public class DiagramNodeUtil { G2DSceneGraph sg = provider.initializeSceneGraph(new G2DSceneGraph(), modelURI, diagramRVI); NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), sg); + Simantics.getSession().getService(TransactionSupport.class).waitCompletion(); return cp.getCanvasContext(); } - /** - * @deprecated this leaks ICanvasSceneGraphProvider, use - * {@link #loadSceneGraphProvider(ICanvasContext, Resource, Resource, String)} - * instead - */ - public static ICanvasContext loadDiagram(ICanvasContext context, Resource model, Resource composite, String diagramRVI) throws DatabaseException, InterruptedException { - String modelURI = Simantics.getSession().syncRequest(Queries.uri(model)); - ISceneGraphProvider provider = Simantics.getSession().syncRequest( Queries.adapt( composite, ISceneGraphProvider.class ) ); - ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider; - cp.initializeSceneGraph(context, modelURI, diagramRVI); - - NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), context.getSceneGraph()); - - return cp.getCanvasContext(); - } - - public static ICanvasSceneGraphProvider loadSceneGraphProviderForComposite(Resource model, Resource composite, String diagramRVI) throws DatabaseException, InterruptedException { + public static ICanvasSceneGraphProvider loadSceneGraphProviderForComposite(Resource model, Resource composite, String diagramRVI) throws DatabaseException { String modelURI = Simantics.getSession().syncRequest(Queries.uri(model)); ISceneGraphProvider provider = Simantics.getSession().syncRequest( Queries.adapt( composite, ISceneGraphProvider.class ) ); ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider; G2DSceneGraph sg = cp.initializeSceneGraph(new G2DSceneGraph(), modelURI, diagramRVI); NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), sg); + Simantics.getSession().getService(TransactionSupport.class).waitCompletion(); return cp; } @@ -188,6 +175,7 @@ public class DiagramNodeUtil { ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider; cp.initializeSceneGraph(context, modelURI, diagramRVI); NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), context.getSceneGraph(), timeoutMs); + Simantics.getSession().getService(TransactionSupport.class).waitCompletion(); return cp; } @@ -197,6 +185,7 @@ public class DiagramNodeUtil { ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider; cp.initializeSceneGraph(context, modelURI, diagramRVI); NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), context.getSceneGraph()); + Simantics.getSession().getService(TransactionSupport.class).waitCompletion(); return cp; } @@ -236,7 +225,7 @@ public class DiagramNodeUtil { } public static final Set getTexts(Set nodes) { - Set result = new HashSet(); + Set result = new HashSet(nodes.size()); for(TextNode n : nodes) result.add(n.getText()); return result; }