]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/elements/DiagramNodeUtil.java
Merge "(refs #7567) Added throw function to builtins"
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / elements / DiagramNodeUtil.java
index 859154d0b6be2e3003e1637e7c643526d2c6fe81..f2cccf7749527df9c5d7a851a17040fac3f19ef5 100644 (file)
@@ -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();
@@ -146,22 +147,7 @@ public class DiagramNodeUtil {
         G2DSceneGraph sg = provider.initializeSceneGraph(new G2DSceneGraph(), modelURI, diagramRVI);
 
         NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), sg);
-
-        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());
+        Simantics.getSession().getService(TransactionSupport.class).waitCompletion();
 
         return cp.getCanvasContext();
     }
@@ -173,6 +159,7 @@ public class DiagramNodeUtil {
         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<String> getTexts(Set<TextNode> nodes) {
-        Set<String> result = new HashSet<String>();
+        Set<String> result = new HashSet<String>(nodes.size());
         for(TextNode n : nodes) result.add(n.getText());
         return result;
     }