@Override public void mouseDragged(MouseEvent evt) { dragLocation = new Point(evt.getX(), evt.getY()); multicaster.trackStep(anchor, dragLocation, evt.getModifiersEx(), getView()); clearHoverHandles(); }
@Override public void mouseReleased(MouseEvent evt) { dragLocation = new Point(evt.getX(), evt.getY()); multicaster.trackEnd(anchor, dragLocation, evt.getModifiersEx(), getView()); // Note: we must not fire "Tool Done" in this method, because then we can not // listen to keyboard events for the handle. Rectangle r = new Rectangle(anchor.x, anchor.y, 0, 0); r.add(evt.getX(), evt.getY()); maybeFireBoundsInvalidated(r); dragLocation = null; }
protected void clearHoverHandles() { updateHoverHandles(null, null); }
@Override public void mouseMoved(MouseEvent evt) { Point point = evt.getPoint(); updateCursor(editor.findView((Container) evt.getSource()), point); DrawingView view = editor.findView((Container) evt.getSource()); updateCursor(view, point); if (view == null || editor.getActiveView() != view) { clearHoverHandles(); } else { // Search first, if one of the selected figures contains // the current mouse location. Only then search for other // figures. This search sequence is consistent with the // search sequence of the SelectionTool. Figure figure = null; Point2D.Double p = view.viewToDrawing(point); for (Figure f : view.getSelectedFigures()) { if (f.contains(p)) { figure = f; } } if (figure == null) { figure = view.findFigure(point); Drawing drawing = view.getDrawing(); while (figure != null && !figure.isSelectable()) { figure = drawing.findFigureBehind(p, figure); } } updateHoverHandles(view, figure); } }
@Override public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 2) { multicaster.trackDoubleClick(new Point(evt.getX(), evt.getY()), evt.getModifiersEx(), getView()); } evt.consume(); }
/** * Method to get a {@code HandleTracker} which handles user interaction * for the specified handle. */ protected HandleTracker getHandleTracker(Handle handle) { if (handleTracker == null) { handleTracker = new DefaultHandleTracker(); } handleTracker.setHandles(handle, getView().getCompatibleHandles(handle)); return handleTracker; }
@Override public void draw(Graphics2D g) { if (hoverHandles.size() > 0 && !getView().isFigureSelected(hoverFigure)) { for (Handle h : hoverHandles) { h.draw(g); } } }
@Override public void mousePressed(MouseEvent evt) { //handle.mousePressed(evt); anchor = new Point(evt.getX(), evt.getY()); multicaster.trackStart(anchor, evt.getModifiersEx(), getView()); clearHoverHandles(); }
@Override public void keyReleased(KeyEvent evt) { multicaster.keyReleased(evt); // Forward key releases to the handler if (dragLocation != null) { multicaster.trackStep(anchor, dragLocation, evt.getModifiersEx(), getView()); } }
@Override public void mouseExited(MouseEvent evt) { DrawingView view = editor.findView((Container) evt.getSource()); updateHoverHandles(view, null); dragLocation = null; }
@Override public void deactivate(DrawingEditor editor) { super.deactivate(editor); getView().setCursor(Cursor.getDefaultCursor()); getView().setActiveHandle(null); clearHoverHandles(); dragLocation = null; }
@Override public void keyPressed(KeyEvent evt) { multicaster.keyPressed(evt); if (!evt.isConsumed()) { super.keyPressed(evt); // Forward key presses to the handler if (dragLocation != null) { multicaster.trackStep(anchor, dragLocation, evt.getModifiersEx(), getView()); } } }
@Override public void activate(DrawingEditor editor) { super.activate(editor); getView().setCursor(masterHandle.getCursor()); getView().setActiveHandle(masterHandle); clearHoverHandles(); }