X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fparticipants%2FDynamicVisualisationContributionsParticipant.java;h=8ddb04916cefa70da43cc3d49079e233a24f7cee;hb=cec724b0623ecad719c5c08c5e51e20783fc6323;hp=9fbb8a29d008f8d24e9c7971b384b04199875ef6;hpb=86d471d96d6bc11bf7629113e57c6d9a9916e608;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DynamicVisualisationContributionsParticipant.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DynamicVisualisationContributionsParticipant.java index 9fbb8a29..8ddb0491 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DynamicVisualisationContributionsParticipant.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DynamicVisualisationContributionsParticipant.java @@ -2,6 +2,9 @@ package org.simantics.district.network.ui.participants; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -17,8 +20,11 @@ import org.simantics.db.exception.DatabaseException; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.district.network.profile.RuntimeDynamicVisualisationsRequest; import org.simantics.district.network.ui.DistrictDiagramViewer; +import org.simantics.district.network.ui.nodes.DeferredRenderingNode; +import org.simantics.district.network.ui.nodes.DistrictNetworkEdgeArrayNode; import org.simantics.district.network.ui.nodes.DistrictNetworkHoverInfoNode; import org.simantics.district.network.ui.nodes.DynamicVisualisationContributionsNode; +import org.simantics.district.network.ui.nodes.ElevationServerNode; import org.simantics.district.network.ui.styles.DistrictNetworkHoverInfoStyle; import org.simantics.district.network.ui.styles.DistrictNetworkHoverInfoStyle.StyleResult; import org.simantics.district.network.visualisations.model.ColorBarOptions; @@ -29,10 +35,12 @@ import org.simantics.district.network.visualisations.model.SizeBarOptions; import org.simantics.g2d.canvas.ICanvasContext; import org.simantics.g2d.canvas.impl.AbstractCanvasParticipant; import org.simantics.g2d.canvas.impl.SGNodeReflection.SGInit; +import org.simantics.maps.elevation.server.SingletonTiffTileInterface; import org.simantics.scenegraph.INode; import org.simantics.scenegraph.g2d.G2DParentNode; import org.simantics.scenegraph.g2d.events.EventHandlerReflection.EventHandler; import org.simantics.scenegraph.g2d.events.command.CommandEvent; +import org.simantics.utils.datastructures.Pair; import org.simantics.utils.datastructures.hints.HintListenerAdapter; import org.simantics.utils.datastructures.hints.IHintContext.Key; import org.simantics.utils.datastructures.hints.IHintListener; @@ -59,6 +67,9 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas private DynamicVisualisationContributionsNode node; private AffineTransform transform; private DistrictNetworkHoverInfoNode hoverInfoNode; + private DeferredRenderingNode deferredEdgeArrowRendererNode; + + private ElevationServerNode showElevationServerBoundingBoxNode; public DynamicVisualisationContributionsParticipant(AffineTransform tr) { this.transform = tr; @@ -71,6 +82,7 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas getHintStack().addKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_COLOR_BAR_OPTIONS, hintListener); getHintStack().addKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_SIZING_OBJECTS, hintListener); getHintStack().addKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_SIZE_BAR_OPTIONS, hintListener); + getHintStack().addKeyHintListener(getThread(), DistrictDiagramViewer.KEY_SHOW_ELEVATION_SERVER, hintListener); } @Override @@ -84,6 +96,7 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas getHintStack().removeKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_COLOR_BAR_OPTIONS, hintListener); getHintStack().removeKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_SIZING_OBJECTS, hintListener); getHintStack().removeKeyHintListener(getThread(), DistrictDiagramViewer.KEY_MAP_SIZE_BAR_OPTIONS, hintListener); + getHintStack().removeKeyHintListener(getThread(), DistrictDiagramViewer.KEY_SHOW_ELEVATION_SERVER, hintListener); super.removedFromContext(ctx); } @@ -98,6 +111,12 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas hoverInfoNode.setLookupId("districtNetworkHoverInfoNode"); hoverInfoNode.setTransform(transform); hoverInfoNode.setZIndex(Integer.MAX_VALUE - 500); + + Pair> dearn = DistrictNetworkEdgeArrayNode.renderer(); + deferredEdgeArrowRendererNode = parent.addNode(dearn.first, dearn.second); + + showElevationServerBoundingBoxNode = parent.addNode(ElevationServerNode.ID, ElevationServerNode.class); + showElevationServerBoundingBoxNode.setTransform(transform); } @EventHandler(priority = 0) @@ -114,6 +133,15 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas node.setColorBarOptions(getColorBarOptions()); node.setDynamicSizingObjects(getDynamicSizingObjects()); node.setSizeBarOptions(getSizeBarOptions()); + + showElevationServerBoundingBoxNode.setRectangles(getRectangles()); + } + + private Collection getRectangles() { + Boolean enabled = getHint(DistrictDiagramViewer.KEY_SHOW_ELEVATION_SERVER); + if (enabled != null && enabled) + return SingletonTiffTileInterface.getBoundingBoxes(); + return Collections.emptyList(); } private Map getDynamicColoringObjects() { @@ -173,7 +201,7 @@ public class DynamicVisualisationContributionsParticipant extends AbstractCanvas StyleResult results = DistrictNetworkHoverInfoStyle.doCalculateStyleResult(graph, runtimeDiagram, mapElement); if (results != null) { - Point2D location = DistrictNetworkHoverInfoStyle.calculatePoint(hoveredNode, zoomLevel); + Point2D location = DistrictNetworkHoverInfoStyle.calculatePoint(hoveredNode, zoomLevel, null); thread.asyncExec(() -> { if (isRemoved()) return;