X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2FDistrictDiagramViewer.java;h=903c2ffa3223b74c251d25154adab949e0a6470b;hb=e6b35994e05232dd536af4da224a342c1bd090af;hp=d0b1a8a1ac9d6a1e5dd73848815d74c17d72c523;hpb=81e0cb1fb018e2f1098fc610fb91bda89dce81f1;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java index d0b1a8a1..903c2ffa 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictDiagramViewer.java @@ -12,14 +12,16 @@ import java.util.function.Supplier; import org.simantics.datatypes.literal.RGB; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; -import org.simantics.db.common.request.IndexRoot; +import org.simantics.db.common.request.PossibleIndexRoot; import org.simantics.db.common.request.UnaryRead; import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.Listener; import org.simantics.diagram.ui.DiagramModelHints; import org.simantics.district.network.DistrictNetworkUtil; import org.simantics.district.network.ontology.DistrictNetworkResource; +import org.simantics.district.network.ui.internal.Activator; import org.simantics.district.network.ui.nodes.DistrictRenderingPreparationNode; +import org.simantics.district.network.ui.nodes.DistrictSelectionNode; import org.simantics.district.network.ui.participants.DNPointerInteractor; import org.simantics.district.network.ui.participants.DynamicVisualisationContributionsParticipant; import org.simantics.district.network.ui.participants.ElevationServerParticipant; @@ -34,6 +36,7 @@ import org.simantics.g2d.canvas.impl.CanvasContext; import org.simantics.g2d.diagram.handler.PickRequest.PickFilter; import org.simantics.g2d.diagram.participant.DelayedBatchElementPainter; import org.simantics.g2d.diagram.participant.ElementPainter; +import org.simantics.g2d.diagram.participant.ElementPainterConfiguration; import org.simantics.g2d.diagram.participant.Selection; import org.simantics.g2d.diagram.participant.ZOrderHandler; import org.simantics.g2d.participant.BackgroundPainter; @@ -65,15 +68,16 @@ public class DistrictDiagramViewer extends DiagramViewer { protected void addDiagramParticipants(ICanvasContext ctx) { ctx.add(new ZOrderHandler()); ctx.add(new Selection()); - ctx.add(new ElementPainter()); + ctx.add(new ElementPainter(new ElementPainterConfiguration().selectionNodeClass(DistrictSelectionNode.class))); ctx.add(new DNPointerInteractor()); AffineTransform tr = new AffineTransform(MapScalingTransform.INSTANCE); ctx.add(new MapPainter(tr)); - ctx.add(new NetworkDrawingParticipant(tr)); + DynamicVisualisationContributionsParticipant dynamicVisualisationContributionsParticipant = new DynamicVisualisationContributionsParticipant(tr); + ctx.add(new NetworkDrawingParticipant(dynamicVisualisationContributionsParticipant, tr)); ctx.add(new ElevationServerParticipant(tr)); - ctx.add(new DynamicVisualisationContributionsParticipant(tr)); + ctx.add(dynamicVisualisationContributionsParticipant); // Optimize AffineTransform memory allocations during district diagram rendering G2DParentNode spatialRoot = (G2DParentNode) ctx.getSceneGraph().lookupNode(SceneGraphConstants.SPATIAL_ROOT_NODE_ID); @@ -138,6 +142,26 @@ public class DistrictDiagramViewer extends DiagramViewer { setupColorBarOptions(); setupSizingObjects(); setupSizeBarOptions(); + + // add listeners + DistrictDiagramViewerListener[] listeners = Activator.getInstance().getDistrictDiagramViewerListeners(); + if (listeners != null) { + for (DistrictDiagramViewerListener listener : listeners) { + listener.diagramLoaded(getRuntime(), canvasContext); + } + } + } + + @Override + public void dispose() { + DistrictDiagramViewerListener[] listeners = Activator.getInstance().getDistrictDiagramViewerListeners(); + if (listeners != null) { + Resource runtime = getRuntime(); + for (DistrictDiagramViewerListener listener : listeners) { + listener.diagramDisposed(runtime, canvasContext); + } + } + super.dispose(); } private void setupDrawMapEnabled() { @@ -325,15 +349,17 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public ColorBarOptions perform(ReadGraph graph) throws DatabaseException { DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); - Resource model = graph.syncRequest(new IndexRoot(parameter)); - Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); - if (vf != null) { - Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); - if (activeVisualisation != null) { - return DynamicVisualisations.colorBarOptions(graph, activeVisualisation); + Resource model = graph.syncRequest(new PossibleIndexRoot(parameter)); + if (model != null) { + Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DynamicVisualisations.colorBarOptions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); } - } else { - LOGGER.debug("No visualisation folder available for model {}", model); } return ColorBarOptions.useDefault(); } @@ -348,15 +374,17 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public Map perform(ReadGraph graph) throws DatabaseException { DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); - Resource model = graph.syncRequest(new IndexRoot(parameter)); - Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); - if (vf != null) { - Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); - if (activeVisualisation != null) { - return DynamicVisualisations.colorContributions(graph, activeVisualisation); + Resource model = graph.syncRequest(new PossibleIndexRoot(parameter)); + if (model != null) { + Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DynamicVisualisations.colorContributions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); } - } else { - LOGGER.debug("No visualisation folder available for model {}", model); } return Collections.emptyMap(); } @@ -429,15 +457,17 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public SizeBarOptions perform(ReadGraph graph) throws DatabaseException { DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); - Resource model = graph.syncRequest(new IndexRoot(parameter)); - Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); - if (vf != null) { - Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); - if (activeVisualisation != null) { - return DynamicVisualisations.sizeBarOptions(graph, activeVisualisation); + Resource model = graph.syncRequest(new PossibleIndexRoot(parameter)); + if (model != null) { + Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DynamicVisualisations.sizeBarOptions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); } - } else { - LOGGER.debug("No visualisation folder available for model {}", model); } return SizeBarOptions.useDefault(); } @@ -480,15 +510,17 @@ public class DistrictDiagramViewer extends DiagramViewer { @Override public Map perform(ReadGraph graph) throws DatabaseException { DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); - Resource model = graph.syncRequest(new IndexRoot(parameter)); - Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); - if (vf != null) { - Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); - if (activeVisualisation != null) { - return DynamicVisualisations.sizeContributions(graph, activeVisualisation); + Resource model = graph.syncRequest(new PossibleIndexRoot(parameter)); + if (model != null) { + Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model); + if (vf != null) { + Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation); + if (activeVisualisation != null) { + return DynamicVisualisations.sizeContributions(graph, activeVisualisation); + } + } else { + LOGGER.debug("No visualisation folder available for model {}", model); } - } else { - LOGGER.debug("No visualisation folder available for model {}", model); } return Collections.emptyMap(); }