X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fsg%2FDiagramSceneGraphProvider.java;h=8d308866753d6db5ff140a52c6909c657238c03f;hb=2bf1a3a2c26cf2a1ff4cd5b56971ef6a0ff10015;hp=9eb653f263b605f9fd5044481320c119d0e94dff;hpb=735e51894a89f6f86629a142c789d94591f3ba8e;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 9eb653f26..8d3088667 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,12 +19,14 @@ import org.simantics.Simantics; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.Session; import org.simantics.db.common.ResourceArray; import org.simantics.db.common.primitiverequest.PossibleAdapter; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.ManyObjectsForFunctionalRelationException; import org.simantics.db.exception.NoSingleResultException; import org.simantics.db.exception.ServiceException; +import org.simantics.db.layer0.variable.Variable; import org.simantics.db.management.ISessionContext; import org.simantics.db.request.Read; import org.simantics.diagram.adapter.DefaultConnectionClassFactory; @@ -76,6 +78,7 @@ import org.simantics.g2d.participant.TimeParticipant; import org.simantics.g2d.participant.TransformUtil; import org.simantics.g2d.participant.ZoomToAreaHandler; import org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider; +import org.simantics.g2d.scenegraph.ICanvasSceneGraphProvider2; import org.simantics.modeling.ModelingResources; import org.simantics.modeling.mapping.ComponentCopyAdvisor; import org.simantics.modeling.mapping.ElementCopyAdvisor; @@ -107,7 +110,7 @@ import org.simantics.utils.ui.ErrorLogger; * @author J-P Laine * */ -public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDiagramUpdateSupport { +public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider2, IDiagramUpdateSupport { protected boolean isSymbol = false; protected Resource resource; @@ -121,7 +124,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi protected AWTRemoteEventAdapter listener = null; - final IHintContext initialHints = new HintContext(); + protected final IHintContext initialHints = new HintContext(); public DiagramSceneGraphProvider(ReadGraph g, final Resource diagramOrComposite) { this.structuralPath = new ResourceArray(); @@ -318,9 +321,18 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi @Override public G2DSceneGraph initializeSceneGraph(ICanvasContext context, String modelURI, String RVI) { G2DSceneGraph sg = context.getSceneGraph(); - return initializeSceneGraph(context, sg, modelURI, RVI, ""); + return initializeSceneGraph(context, sg, modelURI, RVI, "", null); + } + + + @Override + public G2DSceneGraph initializeSceneGraph(ICanvasContext context, String modelURI, String RVI, + Variable experiment) { + G2DSceneGraph sg = context.getSceneGraph(); + return initializeSceneGraph(context, sg, modelURI, RVI, "", experiment); } + /** * @param sg * @param view @@ -330,7 +342,21 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi private G2DSceneGraph initializeSceneGraph(G2DSceneGraph sg, String modelURI, String RVI, String view) { IThreadWorkQueue thread = AWTThread.getThreadAccess(); ctx = new CanvasContext(thread, sg); // By giving the scene graph instance as parameter, we can use external serializer - return initializeSceneGraph(ctx, sg, modelURI, RVI, view); + return initializeSceneGraph(ctx, sg, modelURI, RVI, view, null); + } + + protected GraphToDiagramSynchronizer createSynchronizer(ReadGraph graph) throws DatabaseException { + DiagramResource DIA = DiagramResource.getInstance(graph); + return new GraphToDiagramSynchronizer(graph, ctx, + ElementClassProviders.mappedProvider( + ElementClasses.CONNECTION, DefaultConnectionClassFactory.CLASS.newClassWith(new StaticObjectAdapter(DIA.RouteGraphConnection)), + ElementClasses.FLAG, FlagClassFactory.createFlagClass(DIA.Flag, DIA.Flag_Terminal) + ) + ); + } + + protected RuntimeDiagramManager createRuntimeDiagramManager(Session session, Resource resource, String modelURI, String RVI, Variable experiment) throws DatabaseException { + return RuntimeDiagramManager.create(session, resource, modelURI, RVI); } /** @@ -339,7 +365,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi * @param initialHints * @return */ - private G2DSceneGraph initializeSceneGraph(ICanvasContext context, G2DSceneGraph sg, String modelURI, String RVI, String view) { + private G2DSceneGraph initializeSceneGraph(ICanvasContext context, G2DSceneGraph sg, String modelURI, String RVI, String view, Variable run) { this.ctx = (CanvasContext) context; this.view = view; if(view != null) { @@ -356,7 +382,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi initialHints.setHint(SynchronizationHints.COPY_ADVISOR, getCopyAdvisor()); - final RuntimeDiagramManager runtimeDiagramManager = RuntimeDiagramManager.create(Simantics.getSession(), resource, modelURI, RVI); + final RuntimeDiagramManager runtimeDiagramManager = createRuntimeDiagramManager(Simantics.getSession(), resource, modelURI, RVI, run); synchronizer = Simantics.getSession().syncRequest(new Read() { @Override @@ -366,12 +392,7 @@ 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, - ElementClassProviders.mappedProvider( - ElementClasses.CONNECTION, DefaultConnectionClassFactory.CLASS.newClassWith(new StaticObjectAdapter(dr.Connection)), - ElementClasses.FLAG, FlagClassFactory.createFlagClass(dr.Flag, dr.Flag_Terminal) - ) - ); + GraphToDiagramSynchronizer sync = createSynchronizer(graph); sync.set(ModelingSynchronizationHints.MODELING_RESOURCE, ModelingResources.getInstance(graph)); diagram = sync.loadDiagram(new NullProgressMonitor(), graph, null, resource, runtimeDiagramManager.getRuntimeDiagram(), structuralPath, initialHints); // FIXME return sync;