-
- private boolean hoverEdgeNodes(List<IElement> elements, boolean hover, boolean isConnectionTool, boolean changed) {
- for (IElement elem : elements) {
- Node node = elem.getHint(DistrictNetworkEdgeElement.KEY_DN_EDGE_NODE);
- if (node instanceof DistrictNetworkEdgeNode) {
- for (IG2DNode n : ((DistrictNetworkEdgeNode) node).getNodes()) {
- if (n instanceof HoverSensitiveNode) {
- changed = ((HoverSensitiveNode)n).hover(hover, isConnectionTool) || changed;
- }
- }
- }
+
+ private boolean updateHoveredElement(List<IElement> elements, boolean hover, boolean isConnectionTool, AffineTransform viewTransform) {
+ if (elements == null || elements.isEmpty()) {
+ currentHoverElement = null;
+ return dynamicVisualisationContributionsParticipant.doHover(false, isConnectionTool);
+ } else {
+ dynamicVisualisationContributionsParticipant.doHover(true, isConnectionTool);
+
+ // we prefer the first picked element only
+ IElement elem = elements.get(0);
+ if (elem.equals(currentHoverElement))
+ return false;
+
+ INode node = elem.getHint(DistrictNetworkVertexElement.KEY_DN_VERTEX_NODE);
+ if (node == null)
+ node = elem.getHint(DistrictNetworkEdgeElement.KEY_DN_EDGE_NODE);
+ if (node == null)
+ return false;
+
+ Resource mapElement = elem.getHint(ElementHints.KEY_OBJECT);
+ Resource runtimeDiagram = diagram.getHint(DiagramModelHints.KEY_DIAGRAM_RUNTIME_RESOURCE);
+ currentHoverElement = elem;
+ dynamicVisualisationContributionsParticipant.hoverNode(runtimeDiagram, mapElement, node, MapScalingTransform.zoomLevel(viewTransform));
+ return true;