import java.awt.Color;\r
import java.awt.Composite;\r
import java.awt.Stroke;\r
+import java.awt.geom.Point2D;\r
\r
+import org.simantics.diagram.connection.RouteGraph;\r
import org.simantics.scenegraph.INode;\r
import org.simantics.scenegraph.g2d.IG2DNode;\r
+import org.simantics.scenegraph.g2d.events.MouseEvent;\r
import org.simantics.scenegraph.g2d.nodes.connection.RouteGraphNode;\r
import org.simantics.scenegraph.utils.InitValueSupport;\r
import org.simantics.scenegraph.utils.NodeUtil;\r
}\r
}\r
\r
+ @Override\r
+ protected boolean hitTest(MouseEvent event) {\r
+ if (!super.hitTest(event))\r
+ return false;\r
+\r
+ Point2D pos = NodeUtil.worldToLocal(this, event.controlPosition, new Point2D.Double());\r
+ double tolerance = 0.5;\r
+ // TODO: change tolerance based on zoom level\r
+\r
+ for (IG2DNode child : getSortedNodes()) {\r
+ if (child instanceof RouteGraphNode) {\r
+ RouteGraphNode rgn = (RouteGraphNode) child;\r
+ RouteGraph rg = rgn.getRouteGraph();\r
+ Object pick = rg.pickLine(pos.getX(), pos.getY(), tolerance);\r
+ if (pick != null)\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
}\r