]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/NetworkDrawingNode.java
Some performance tuning on node hovering when mouse buttons are pressed
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / NetworkDrawingNode.java
index 35d76289b0ab000f18e36566e55e355c3c2a9042..335f9e118cd1d8c14bd640cc6bd850f6dadb3a18 100644 (file)
@@ -21,15 +21,17 @@ import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.request.Write;
 import org.simantics.diagram.elements.DiagramNodeUtil;
 import org.simantics.diagram.ui.DiagramModelHints;
+import org.simantics.district.network.DNEdgeBuilder;
 import org.simantics.district.network.DistrictNetworkUtil;
 import org.simantics.district.network.ModelledCRS;
 import org.simantics.district.network.ontology.DistrictNetworkResource;
-import org.simantics.district.network.ui.DNEdgeBuilder;
 import org.simantics.district.network.ui.NetworkDrawingParticipant;
 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;
@@ -40,9 +42,13 @@ import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent;
 import org.simantics.scenegraph.utils.GeometryUtils;
 import org.simantics.scenegraph.utils.NodeUtil;
 import org.simantics.utils.threads.ThreadUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class NetworkDrawingNode extends G2DNode {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(NetworkDrawingNode.class);
+
     static class DrawingNode {
 
         private List<Point2D> routeNodes = new ArrayList<>();
@@ -183,7 +189,7 @@ public class NetworkDrawingNode extends G2DNode {
                             if (mapping == null) {
                                mapping = graph.getSingleObject(diagramResource, DistrictNetworkResource.getInstance(graph).VertexDefaultMapping);
                             }
-                            DistrictNetworkUtil.createVertex(graph, diagramResource, new double[] { x, y }, 0, mapping); // TODO: elevation can be fetched from e.g. elevation API
+                            DistrictNetworkUtil.createVertex(graph, diagramResource, new double[] { x, y }, Double.MAX_VALUE, mapping);
                         }
                     });
                 }, 100, TimeUnit.MILLISECONDS);
@@ -234,16 +240,16 @@ public class NetworkDrawingNode extends G2DNode {
             detailedGeometryCoords[i++] = lon;
             detailedGeometryCoords[i++] = lat;
         }
-        
+
         DNEdgeBuilder builder = new DNEdgeBuilder(diagramResource, diagram);
         Simantics.getSession().asyncRequest(new WriteRequest() {
-            
+
             @Override
             public void perform(WriteGraph graph) throws DatabaseException {
-                builder.create(graph, startCoords, 0, endCoords, 0, detailedGeometryCoords, padding);
+                builder.create(graph, startCoords, Double.MAX_VALUE, endCoords, Double.MAX_VALUE, detailedGeometryCoords, padding);
             }
         });
-        
+
     }
 
     @Override
@@ -293,7 +299,8 @@ public class NetworkDrawingNode extends G2DNode {
         boolean repaint = false;
         Point2D p = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double());
         boolean isConnectionTool = mode == Hints.CONNECTTOOL || e.hasAnyModifier(MouseEvent.ALT_MASK | MouseEvent.ALT_GRAPH_MASK);
-        if (participant.pickHoveredElement(p, isConnectionTool)) {
+        // To boost pan perf hovering is only considered if no mouse button is pressed)
+        if (e.buttons == 0 && participant.pickHoveredElement(p, isConnectionTool)) {
             repaint = true;
         }
         if (!nodes.isEmpty()) {