/** * Selects all selectable figures. */ @Override public void selectAll() { Set<Figure> oldSelection = new HashSet<Figure>(selectedFigures); selectedFigures.clear(); for (Figure figure : drawing.getChildren()) { if (figure.isSelectable()) { selectedFigures.add(figure); } } Set<Figure> newSelection = new HashSet<Figure>(selectedFigures); invalidateHandles(); fireSelectionChanged(oldSelection, newSelection); repaint(); }
/** * This method allows subclasses to do perform additonal user interactions * after the new figure has been created. * The implementation of this class just invokes fireToolDone. */ protected void creationFinished(Figure createdFigure) { if (createdFigure.isSelectable()) { getView().addToSelection(createdFigure); } if (isToolDoneAfterCreation()) { fireToolDone(); } }
private void selectGroup(boolean toggle) { Collection<Figure> figures = getView().findFiguresWithin(rubberband); for (Figure f : figures) { if (f.isSelectable()) { getView().addToSelection(f); } } }
if (view.findHandle(anchor) != null || (view.findFigure(anchor) != null && view.findFigure(anchor) .isSelectable()))
@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); } }
protected boolean maybeSwitchTool(final MouseEvent event) { if (activeTool != null && activeTool.isConstructing()) return false; anchor = new Point(event.getX(), event.getY()); JHotDrawTool tool = creationTool; final DrawingView view = getView(); if (view != null && view.isEnabled()) { if (view.findHandle(anchor) != null || (view.findFigure(anchor) != null && view.findFigure(anchor) .isSelectable())) { tool = selectionTool; } } if (activeTool != tool) { if (activeTool != null) { activeTool.deactivate(getEditor()); } if (tool != null) { tool.activate(getEditor()); if (!isActive()) { tool.deactivate(getEditor()); } } activeTool = tool; return true; } return false; } }
@Override public void mouseMoved(MouseEvent evt) { clearRubberBand(); Point point = evt.getPoint(); 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, and is selectable. // 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); while (figure != null && !figure.isSelectable()) { figure = view.getDrawing().findFigureBehind(p, figure); } } updateHoverHandles(view, figure); } }
protected void updateHoverHandles(@Nullable DrawingView view, @Nullable Figure f) { if (f != hoverFigure) { Rectangle r = null; if (hoverFigure != null && hoverFigure.isSelectable()) { for (Handle h : hoverHandles) { if (r == null) {
if (hoverFigure != null && f.isSelectable()) { hoverHandles.addAll(hoverFigure.createHandles(-1)); for (Handle h : hoverHandles) {
public void updateCursor(DrawingView view, Point p) { if (view.isEnabled()) { Handle handle = view.findHandle(p); if (handle != null) { view.setCursor(handle.getCursor()); } else { Figure figure = view.findFigure(p); Point2D.Double point = view.viewToDrawing(p); Drawing drawing = view.getDrawing(); while (figure != null && !figure.isSelectable()) { figure = drawing.findFigureBehind(point, figure); } if (figure != null) { view.setCursor(figure.getCursor(view.viewToDrawing(p))); } else { view.setCursor(Cursor.getDefaultCursor()); } } } else { view.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } }
while (figure != null && !figure.isSelectable()) { figure = drawing.findFigureBehind(p, figure); while (figure != null && !figure.isSelectable()) { figure = drawing.findFigureBehind(p, figure); if (figure != null && figure.isSelectable()) { newTracker = getDragTracker(figure); } else {
if (figure != null && figure.isSelectable()) { if (DEBUG) { System.out.println("DelegationSelectionTool.handleDoubleClick by figure");