@Override public void mouseDragged(MouseEvent evt) { if (finishWhenMouseReleased == null) { finishWhenMouseReleased = Boolean.TRUE; } int x = evt.getX(); int y = evt.getY(); addPointToFigure(getView().viewToDrawing(new Point(x, y))); }
@Override public void trackStart(Point anchor, int modifiersEx) { oldPoint = view.getConstrainer().constrainPoint(view.viewToDrawing(anchor)); } @Override
@Override public void trackStart(Point anchor, int modifiersEx) { oldPoint = view.getConstrainer().constrainPoint(view.viewToDrawing(anchor)); }
protected Point2D.Double viewToDrawing(Point p) { return constrainPoint(getView().viewToDrawing(p)); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { if (!isTransformableCache) { return; } Point2D.Double p = view.viewToDrawing(new Point(lead.x + dx, lead.y + dy)); view.getConstrainer().constrainPoint(p); trackStepNormalized(p); }
protected Point2D.Double constrainPoint(Point p) { return constrainPoint(getView().viewToDrawing(p)); }
@Override public void trackStart(Point anchor, int modifiersEx) { location = new Point(anchor.x, anchor.y); restoreData = getOwner().getTransformRestoreData(); transform = new AffineTransform(); center = getCenter(); Point2D.Double anchorPoint = view.viewToDrawing(anchor); startTheta = Geom.angle(center.x, center.y, anchorPoint.x, anchorPoint.y); startLength = Geom.length(center.x, center.y, anchorPoint.x, anchorPoint.y); }
@Override public boolean contains(Point p) { return getOwner().contains(getView().viewToDrawing(p)); }
@Override public void trackStart(Point anchor, int modifiersEx) { location = new Point(anchor.x, anchor.y); restoreData = getBezierFigure().getTransformRestoreData(); transform = new AffineTransform(); center = getBezierFigure().getCenter(); Point2D.Double anchorPoint = view.viewToDrawing(anchor); startTheta = Geom.angle(center.x, center.y, anchorPoint.x, anchorPoint.y); startLength = Geom.length(center.x, center.y, anchorPoint.x, anchorPoint.y); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { Figure f = getOwner(); Point2D.Double newPoint = view.getConstrainer().constrainPoint(view.viewToDrawing(lead)); AffineTransform tx = new AffineTransform(); tx.translate(newPoint.x - oldPoint.x, newPoint.y - oldPoint.y); f.willChange(); f.transform(tx); f.changed(); oldPoint = newPoint; } @Override
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { Figure f = getOwner(); if (f.isTransformable()) { Point2D.Double newPoint = view.getConstrainer().constrainPoint(view.viewToDrawing(lead)); AffineTransform tx = new AffineTransform(); tx.translate(newPoint.x - oldPoint.x, newPoint.y - oldPoint.y); f.willChange(); f.transform(tx); f.changed(); oldPoint = newPoint; } }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { location = new Point(lead.x, lead.y); Point2D.Double leadPoint = view.viewToDrawing(lead); double stepTheta = Geom.angle(center.x, center.y, leadPoint.x, leadPoint.y); double stepLength = Geom.length(center.x, center.y, leadPoint.x, leadPoint.y); double scaleFactor = (modifiersEx & (InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)) != 0 ? 1d : stepLength / startLength; transform.setToIdentity(); transform.translate(center.x, center.y); transform.scale(scaleFactor, scaleFactor); transform.rotate(stepTheta - startTheta); transform.translate(-center.x, -center.y); getOwner().willChange(); getOwner().restoreTransformTo(restoreData); getOwner().transform(transform); getOwner().changed(); } /*
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { location = new Point(lead.x, lead.y); Point2D.Double leadPoint = view.viewToDrawing(lead); double stepTheta = Geom.angle(center.x, center.y, leadPoint.x, leadPoint.y); double currentTheta = view.getConstrainer().constrainAngle(stepTheta - startTheta); transform.setToIdentity(); transform.translate(center.x, center.y); transform.rotate(currentTheta); transform.translate(-center.x, -center.y); getOwner().willChange(); getOwner().restoreTransformTo(restoreData); getOwner().transform(transform); getOwner().changed(); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { TextHolderFigure textOwner = (TextHolderFigure) getOwner(); Point2D.Double anchor2D = view.viewToDrawing(anchor); Point2D.Double lead2D = view.viewToDrawing(lead); if (textOwner.get(TRANSFORM) != null) { try { textOwner.get(TRANSFORM).inverseTransform(anchor2D, anchor2D); textOwner.get(TRANSFORM).inverseTransform(lead2D, lead2D); } catch (NoninvertibleTransformException ex) { ex.printStackTrace(); } } newSize = (float) Math.max(1, oldSize + lead2D.y - anchor2D.y); textOwner.willChange(); textOwner.setFontSize(newSize); textOwner.changed(); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { int dx = lead.x - anchor.x; int dy = lead.y - anchor.y; RoundRectangleFigure owner = (RoundRectangleFigure) getOwner(); Rectangle r = view.drawingToView(owner.getBounds()); Point viewArc = new Point( Geom.range(0, r.width, 2 * (originalArc.x / 2 + dx)), Geom.range(0, r.height, 2 * (originalArc.y / 2 + dy))); Point2D.Double arc = view.viewToDrawing(viewArc); owner.willChange(); owner.setArc(arc.x, arc.y); owner.changed(); }
@Override public void trackEnd(Point anchor, Point lead, int modifiersEx) { int dx = lead.x - anchor.x; int dy = lead.y - anchor.y; RoundRectangleFigure owner = (RoundRectangleFigure) getOwner(); Rectangle r = view.drawingToView(owner.getBounds()); Point viewArc = new Point( Geom.range(0, r.width, 2 * (originalArc.x / 2 + dx)), Geom.range(0, r.height, 2 * (originalArc.y / 2 + dy))); Point2D.Double oldArc = view.viewToDrawing(originalArc); Point2D.Double newArc = view.viewToDrawing(viewArc); ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels"); CompositeFigureEdit edit = new CompositeFigureEdit(owner, labels.getString("attribute.roundRectRadius")); fireUndoableEditHappened(edit); fireUndoableEditHappened(new PropertyChangeEdit(owner, RoundRectangleFigure.ARC_WIDTH_PROPERTY, oldArc.x, newArc.x)); fireUndoableEditHappened(new PropertyChangeEdit(owner, RoundRectangleFigure.ARC_HEIGHT_PROPERTY, oldArc.y, newArc.y)); fireUndoableEditHappened(edit); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { if (!isTransformableCache) { return; } Point2D.Double p = view.viewToDrawing(new Point(lead.x + sx, lead.y + sy)); view.getConstrainer().constrainPoint(p); if (getOwner().get(TRANSFORM) != null) { try { getOwner().get(TRANSFORM).inverseTransform(p, p); } catch (NoninvertibleTransformException ex) { if (DEBUG) { ex.printStackTrace(); } } } trackStepNormalized(p, (modifiersEx & (InputEvent.ALT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)) != 0); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { ODGRectFigure odgRect = (ODGRectFigure) getOwner(); odgRect.willChange(); Point2D.Double p = view.viewToDrawing(lead); if (odgRect.get(TRANSFORM) != null) { try { odgRect.get(TRANSFORM).inverseTransform(p, p); } catch (NoninvertibleTransformException ex) { if (DEBUG) { ex.printStackTrace(); } } } Rectangle2D.Double r = odgRect.getBounds(); odgRect.setArc(p.x - r.x, p.y - r.y); odgRect.changed(); }
/** * Finds a new connectableConnector of the connection. */ @Override public void trackStep(Point anchor, Point lead, int modifiersEx) { Point2D.Double p = view.viewToDrawing(lead); view.getConstrainer().constrainPoint(p); connectableFigure = findConnectableFigure(p, view.getDrawing()); if (connectableFigure != null) { Connector aTarget = findConnectionTarget(p, view.getDrawing()); if (aTarget != null) { p = aTarget.getAnchor(); } } getOwner().willChange(); setLocation(p); getOwner().changed(); repaintConnectors(); }
@Override public void trackStep(Point anchor, Point lead, int modifiersEx) { BezierFigure figure = getOwner(); figure.willChange(); Point2D.Double p = view.getConstrainer().constrainPoint(view.viewToDrawing(lead)); if (getTransformOwner().get(TRANSFORM) != null) { try { getTransformOwner().get(TRANSFORM).inverseTransform(p, p); } catch (NoninvertibleTransformException ex) { ex.printStackTrace(); } } BezierPath.Node n = figure.getNode(index); //fireAreaInvalidated(n); n.moveTo(p); //fireAreaInvalidated(n); figure.setNode(index, n); figure.changed(); }