]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/NetworkDrawingNode.java
Usability fixes for district network node hover info showing
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / NetworkDrawingNode.java
index 335f9e118cd1d8c14bd640cc6bd850f6dadb3a18..e54e5308e5a5e094d733c3e317bd04c096d0b7e7 100644 (file)
@@ -30,8 +30,6 @@ import org.simantics.g2d.canvas.Hints;
 import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.canvas.IToolMode;
 import org.simantics.g2d.diagram.IDiagram;
-import org.simantics.maps.elevation.server.SingletonTiffTileInterface;
-import org.simantics.maps.elevation.server.prefs.MapsElevationServerPreferences;
 import org.simantics.scenegraph.g2d.G2DNode;
 import org.simantics.scenegraph.g2d.events.EventTypes;
 import org.simantics.scenegraph.g2d.events.KeyEvent.KeyPressedEvent;
@@ -76,7 +74,8 @@ public class NetworkDrawingNode extends G2DNode {
     private static final Color RED_ALPHA = new Color(255, 0, 0, 100);
 
     private boolean scaleStroke = true;
-    
+    private AffineTransform lastViewTransform = new AffineTransform();
+
     @Override
     public void init() {
         super.init();
@@ -96,6 +95,9 @@ public class NetworkDrawingNode extends G2DNode {
 
     @Override
     public void render(Graphics2D g2d) {
+        // Must store this for hover info functionality
+        lastViewTransform = g2d.getTransform();
+
         if (nodes.isEmpty())
             return;
 
@@ -286,7 +288,7 @@ public class NetworkDrawingNode extends G2DNode {
     }
 
     private boolean canStartEdge(Point2D currentPos) {
-        return participant.isHoveringOverNode(currentPos);
+        return participant.isHoveringOverNode(currentPos, lastViewTransform);
     }
 
     private IToolMode getToolMode() {
@@ -300,12 +302,11 @@ public class NetworkDrawingNode extends G2DNode {
         Point2D p = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double());
         boolean isConnectionTool = mode == Hints.CONNECTTOOL || e.hasAnyModifier(MouseEvent.ALT_MASK | MouseEvent.ALT_GRAPH_MASK);
         // To boost pan perf hovering is only considered if no mouse button is pressed)
-        if (e.buttons == 0 && participant.pickHoveredElement(p, isConnectionTool)) {
+        if (e.buttons == 0 && participant.pickHoveredElement(p, isConnectionTool, lastViewTransform)) {
             repaint = true;
         }
         if (!nodes.isEmpty()) {
             currentMousePos = p;
-            
             repaint();
             return true;
         }
@@ -314,7 +315,7 @@ public class NetworkDrawingNode extends G2DNode {
             repaint();
         return super.mouseMoved(e);
     }
-    
+
     @Override
     protected boolean keyPressed(KeyPressedEvent e) {
         if (e.keyCode == java.awt.event.KeyEvent.VK_ESCAPE) {
@@ -324,6 +325,5 @@ public class NetworkDrawingNode extends G2DNode {
             return true;
         }
         return super.keyPressed(e);
-            
     }
 }
\ No newline at end of file