/** * Method to get a {@code DragTracker} which handles user interaction * for dragging the specified figure. */ protected DragTracker getDragTracker(Figure f) { if (dragTracker == null) { dragTracker = new DefaultDragTracker(); } dragTracker.setDraggedFigure(f); return dragTracker; }
@Override public void mouseMoved(MouseEvent evt) { updateCursor(editor.findView((Container) evt.getSource()), evt.getPoint()); }
@Override public void mouseReleased(MouseEvent evt) { super.mouseReleased(evt); DrawingView view = getView(); if (transformedFigures == null && !transformedFigures.isEmpty()) { isDragging = false; int x = evt.getX(); int y = evt.getY(); updateCursor(editor.findView((Container) evt.getSource()), new Point(x, y)); Point2D.Double newPoint = view.viewToDrawing(new Point(x, y)); Figure dropTarget = getDrawing().findFigureExcept(newPoint, transformedFigures); if (dropTarget != null) { boolean snapBack = dropTarget.handleDrop(newPoint, transformedFigures, view); maybeFireBoundsInvalidated(r); fireToolDone(); return; -anchorOrigin.y + previousOrigin.y); if (!tx.isIdentity()) { getDrawing().fireUndoableEditHappened(new TransformEdit( transformedFigures, tx)); maybeFireBoundsInvalidated(r); transformedFigures = null; fireToolDone();
@Override public void mouseDragged(MouseEvent evt) { DrawingView view = getView(); if (!transformedFigures.isEmpty()) { if (isDragging == false) { isDragging = true; updateCursor(editor.findView((Container) evt.getSource()), new Point(evt.getX(), evt.getY())); } Point2D.Double currentPoint = view.viewToDrawing(new Point(evt.getX(), evt.getY())); dragRect.x += currentPoint.x - previousPoint.x; dragRect.y += currentPoint.y - previousPoint.y; Rectangle2D.Double constrainedRect = (Rectangle2D.Double) dragRect.clone(); if (view.getConstrainer() != null) { view.getConstrainer().constrainRectangle( constrainedRect); } AffineTransform tx = new AffineTransform(); tx.translate( constrainedRect.x - previousOrigin.x, constrainedRect.y - previousOrigin.y); for (Figure f : transformedFigures) { f.willChange(); f.transform(tx); f.changed(); } previousPoint = currentPoint; previousOrigin = new Point2D.Double(constrainedRect.x, constrainedRect.y); } }
@Override public void mousePressed(MouseEvent evt) { super.mousePressed(evt); DrawingView view = getView();