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;
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();
}
public static ICanvasContext getPossibleCanvasContext(IG2DNode node) {
- G2DSceneGraph sg = NodeUtil.getPossibleRootNode(node);
+ G2DSceneGraph sg = node.getRootNode2D();
if (sg == null)
return null;
Component rootPane = sg.getRootPane();
};
}
- 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);
}
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;
}
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;
}
ICanvasSceneGraphProvider cp = (ICanvasSceneGraphProvider) provider;
cp.initializeSceneGraph(context, modelURI, diagramRVI);
NodeUtil.waitPending(cp.getCanvasContext().getThreadAccess(), context.getSceneGraph());
+ Simantics.getSession().getService(TransactionSupport.class).waitCompletion();
return cp;
}
}
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;
}