@Override public boolean contains(Point2D.Double p) { if (getDrawingArea().contains(p)) { if (get(TRANSFORM) != null) { try { p = (Point2D.Double) get(TRANSFORM).inverseTransform(p, new Point2D.Double()); } catch (NoninvertibleTransformException ex) { InternalError error = new InternalError(ex.getMessage()); error.initCause(ex); throw error; } } for (Figure child : getChildren()) { if (child.isVisible() && child.contains(p)) { return true; } } } return false; }