+
+ @Override
+ public boolean pickTest(IElement e, Shape s, PickPolicy policy) {
+ DistrictNetworkVertexNode node = e.getHint(KEY_DN_VERTEX_NODE);
+ Rectangle2D boundsInLocal = node.getBounds();
+ ICanvasContext ctx = DiagramNodeUtil.getCanvasContext(node);
+ AffineTransform canvasTransform = ctx.getHintStack().getHint(Hints.KEY_CANVAS_TRANSFORM);
+ Rectangle2D scaledBounds = new Rectangle2D.Double(boundsInLocal.getX(), boundsInLocal.getY(), boundsInLocal.getWidth() / canvasTransform.getScaleX() * 2, boundsInLocal.getHeight() / canvasTransform.getScaleY() * 2);
+ Rectangle2D bounds = getBounds(s);
+ switch (policy) {
+ case PICK_CONTAINED_OBJECTS:
+ return org.simantics.g2d.utils.GeometryUtils.contains(bounds, boundsInLocal);
+ case PICK_INTERSECTING_OBJECTS:
+ return org.simantics.g2d.utils.GeometryUtils.intersects(boundsInLocal, bounds);
+ }
+ return false;
+ }