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;
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;
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;
private DynamicVisualisationContributionsNode node;
private AffineTransform transform;
private DistrictNetworkHoverInfoNode hoverInfoNode;
+ private DeferredRenderingNode deferredEdgeArrowRendererNode;
+
+ private ElevationServerNode showElevationServerBoundingBoxNode;
public DynamicVisualisationContributionsParticipant(AffineTransform tr) {
this.transform = tr;
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
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);
}
hoverInfoNode.setLookupId("districtNetworkHoverInfoNode");
hoverInfoNode.setTransform(transform);
hoverInfoNode.setZIndex(Integer.MAX_VALUE - 500);
+
+ Pair<String, Class<DeferredRenderingNode>> dearn = DistrictNetworkEdgeArrayNode.renderer();
+ deferredEdgeArrowRendererNode = parent.addNode(dearn.first, dearn.second);
+
+ showElevationServerBoundingBoxNode = parent.addNode(ElevationServerNode.ID, ElevationServerNode.class);
+ showElevationServerBoundingBoxNode.setTransform(transform);
}
@EventHandler(priority = 0)
node.setColorBarOptions(getColorBarOptions());
node.setDynamicSizingObjects(getDynamicSizingObjects());
node.setSizeBarOptions(getSizeBarOptions());
+
+ showElevationServerBoundingBoxNode.setRectangles(getRectangles());
+ }
+
+ private Collection<Rectangle2D> getRectangles() {
+ Boolean enabled = getHint(DistrictDiagramViewer.KEY_SHOW_ELEVATION_SERVER);
+ if (enabled != null && enabled)
+ return SingletonTiffTileInterface.getBoundingBoxes();
+ return Collections.emptyList();
}
private Map<String, DynamicColorContribution> getDynamicColoringObjects() {