X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fsg%2FDiagramSceneGraphProvider.java;h=e08984e7f2baa7490c3ec58a56266317519bb314;hb=refs%2Fchanges%2F09%2F4609%2F1;hp=ca6d6d04cfa2ea1feeb8572ab3d256acb9de5ec9;hpb=06b8d15b931929743ddc4a90b4f057552b09c2b6;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java index ca6d6d04c..e08984e7f 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java @@ -19,6 +19,7 @@ import org.simantics.Simantics; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.VirtualGraph; import org.simantics.db.common.ResourceArray; import org.simantics.db.common.primitiverequest.PossibleAdapter; import org.simantics.db.exception.DatabaseException; @@ -28,6 +29,7 @@ import org.simantics.db.exception.ServiceException; import org.simantics.db.management.ISessionContext; import org.simantics.db.procedure.Listener; import org.simantics.db.request.Read; +import org.simantics.db.service.VirtualGraphSupport; import org.simantics.diagram.adapter.DefaultConnectionClassFactory; import org.simantics.diagram.adapter.FlagClassFactory; import org.simantics.diagram.adapter.GraphToDiagramSynchronizer; @@ -36,6 +38,7 @@ import org.simantics.diagram.handler.CopyPasteStrategy; import org.simantics.diagram.handler.DefaultCopyPasteStrategy; import org.simantics.diagram.handler.DeleteHandler; import org.simantics.diagram.handler.SimpleElementTransformHandler; +import org.simantics.diagram.participant.ConnectionCrossingsParticipant; import org.simantics.diagram.query.DiagramRequests; import org.simantics.diagram.runtime.RuntimeDiagramManager; import org.simantics.diagram.stubs.DiagramResource; @@ -251,6 +254,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi ctx.add( new Selection() ); ctx.add( new DiagramParticipant() ); ctx.add( new ElementPainter(true) ); + ctx.add( new ConnectionCrossingsParticipant(resource)); //ctx.add( new ElementHeartbeater() ); ctx.add( new ZOrderHandler() ); @@ -293,16 +297,12 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi // Create a listener to react to page setting changes. Simantics.getSession().asyncRequest(DiagramRequests.getDiagramDesc(diagramResource), new Listener() { - @Override public void execute(DiagramDesc result) { if (result != null && ctx != null) { - ThreadUtils.asyncExec(ctx.getThreadAccess(), new Runnable() { - @Override - public void run() { - if (ctx != null) { - setDiagramDesc(ctx, result); - } + ThreadUtils.asyncExec(ctx.getThreadAccess(), () -> { + if (ctx != null) { + setDiagramDesc(ctx, result); } }); } @@ -315,9 +315,8 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi @Override public boolean isDisposed() { - return ctx == null; + return DiagramSceneGraphProvider.this.ctx == null; } - }); } catch (DatabaseException e) { ErrorLogger.defaultLogError(e); @@ -382,6 +381,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi fillInitialDiagramHints(initialHints); final RuntimeDiagramManager runtimeDiagramManager = RuntimeDiagramManager.create(Simantics.getSession(), resource, modelURI, RVI); + VirtualGraphSupport support = Simantics.getSession().getService(VirtualGraphSupport.class); synchronizer = Simantics.getSession().syncRequest(new Read() { @Override @@ -391,7 +391,13 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi if(val != null && navigation == null) { // Set only if navigation has not been set manually navigation = val; } - GraphToDiagramSynchronizer sync = new GraphToDiagramSynchronizer(graph, ctx,createElementClassProvider(graph)); + VirtualGraph virtualGraph = support.getGraph(graph, resource); + GraphToDiagramSynchronizer sync; + if (virtualGraph != null) { + sync = new GraphToDiagramSynchronizer(graph, ctx,createElementClassProvider(graph), virtualGraph); + } else { + sync = new GraphToDiagramSynchronizer(graph, ctx,createElementClassProvider(graph)); + } sync.set(ModelingSynchronizationHints.MODELING_RESOURCE, ModelingResources.getInstance(graph)); diagram = sync.loadDiagram(new NullProgressMonitor(), graph, null, resource, runtimeDiagramManager.getRuntimeDiagram(), structuralPath, initialHints); // FIXME