@EventHandler protected void onEvent(final DataViewSelectedEvent event) { final DataView view = event.getView(); final FigureView figureView = getFigureView(view); if (figureView == null) return; // not one of this canvas's views final Figure figure = figureView.getFigure(); if (!drawingView.getSelectedFigures().contains(figure)) { drawingView.addToSelection(figure); } }
public double getScaleFactor() { return view.getScaleFactor(); }
@Override public void figureRemoved(CompositeFigureEvent evt) { if (drawing.getChildCount() == 0 && getEmptyDrawingMessage() != null) { repaint(); } else { repaintDrawingArea(evt.getInvalidatedArea()); } removeFromSelection(evt.getChildFigure()); invalidateDimension(); }
/** * If a figure isn't selected it is added to the selection. * Otherwise it is removed from the selection. */ @Override public void toggleSelection(Figure figure) { if (selectedFigures.contains(figure)) { removeFromSelection(figure); } else { addToSelection(figure); } }
@Override public void undo() throws CannotUndoException { super.undo(); clearSelection(); Drawing d = getDrawing(); for (int i = 0; i < deletedFigureIndices.length; i++) { d.add(deletedFigureIndices[i], deletedFigures.get(i)); } addToSelection(deletedFigures); }
@Override public void run() { view.getDrawing().removeUndoableEditListener(undo); view.setDrawing(newDrawing); view.getDrawing().addUndoableEditListener(undo); undo.discardAllEdits(); } });
drawingView.setDrawing(drawing); subscribers = eventService.subscribe(this); drawingView.addFigureSelectionListener(this); drawingView.addComponentListener(this);
@Override public void duplicate() { Collection<Figure> sorted = getDrawing().sort(getSelectedFigures()); HashMap<Figure, Figure> originalToDuplicateMap = new HashMap<Figure, Figure>(sorted.size()); clearSelection(); addToSelection(duplicates); getDrawing().fireUndoableEditHappened(new AbstractUndoableEdit() {
view.setDrawing(createDrawing()); view.getDrawing().addUndoableEditListener(undo); initActions(); undo.addPropertyChangeListener(new PropertyChangeListener() { view.setScaleFactor(preferences.getDouble("view.scaleFactor", 1d)); view.addPropertyChangeListener(new PropertyChangeListener() {
@EventHandler protected void onEvent(final DataViewDeselectedEvent event) { final DataView view = event.getView(); final FigureView figureView = getFigureView(view); if (figureView == null) return; // not one of this canvas's views final Figure figure = figureView.getFigure(); if (drawingView.getSelectedFigures().contains(figure)) { drawingView.removeFromSelection(figure); } }
final double uiZoom = drawingView.getScaleFactor(); final Point uiOffset = scrollPane.getViewport().getViewPosition(); if (zoomChanged) drawingView.setScaleFactor(canvasZoom);
@Override public void delete() { final java.util.List<Figure> deletedFigures = drawing.sort(getSelectedFigures()); getToolkit().beep(); return; clearSelection(); getDrawing().removeAll(deletedFigures); getDrawing().fireUndoableEditHappened(new AbstractUndoableEdit() {
view.setDrawing(drawing); drawing.addUndoableEditListener(undoManager);
if (!handlesAreValid && getEditor() != null) { handlesAreValid = true; selectionHandles.clear(); Rectangle invalidatedArea = null; while (true) { for (Figure figure : getSelectedFigures()) { for (Handle handle : figure.createHandles(detailLevel)) { handle.setView(this); repaint(invalidatedArea);
/** Creates new form AnimationSample */ public AnimationSample() { initComponents(); DefaultDrawingView view = new DefaultDrawingView(); view.setDrawingDoubleBuffered(false); add(view); setSize(400, 400); Drawing d = new DefaultDrawing(); d.set(CANVAS_FILL_COLOR, new Color(0x76a9d2)); final EllipseFigure ellipse = new EllipseFigure(160, 160, 80, 80); ellipse.set(STROKE_WIDTH, 7d); d.add(ellipse); view.setDrawing(d); Timer t = new Timer(10, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { double alpha = 2d * Math.PI * (System.currentTimeMillis() % 1000) / 1000d; ellipse.willChange(); ellipse.setBounds(new Rectangle2D.Double(160 + Math.sin(alpha) * 100, 160 + Math.cos(alpha) * 100, 80, 80)); ellipse.changed(); } }); t.setRepeats(true); t.start(); }
@Override public void dispose() { toolsPane.removeContainerListener(containerHandler); containerHandler = null; setEditor(null); for (PropertyChangeListener pcl : view.getListeners(PropertyChangeListener.class)) { view.removePropertyChangeListener(pcl); } view.setDrawing(null); actionToolBar.dispose(); alignToolBar.dispose(); arrangeToolBar.dispose(); canvasToolBar.dispose(); creationToolBar.dispose(); figureToolBar.dispose(); fillToolBar.dispose(); fontToolBar.dispose(); linkToolBar.dispose(); strokeToolBar.dispose(); viewToolBar.dispose(); removeAll(); }
@Override public void setEnabled(boolean b) { super.setEnabled(b); setCursor(Cursor.getPredefinedCursor(b ? Cursor.DEFAULT_CURSOR : Cursor.WAIT_CURSOR)); }
public void setScaleFactor(double newValue) { view.setScaleFactor(newValue); }
view.setDrawing(drawing); drawing.addUndoableEditListener(undoManager); view.setTransferHandler((TransferHandler) Class.forName("org.jhotdraw.draw.DnDDrawingViewTransferHandler").newInstance()); } catch (Exception e) {
/** * When a tool creates an overlay, add the overlay/figure combo to an * {@link OverlayFigureView}. */ @EventHandler protected void onEvent(final FigureCreatedEvent event) { final ImageDisplay display = event.getDisplay(); if (display != getDisplay()) return; // not this canvas's display final OverlayView overlay = event.getView(); for (int i = 0; i < display.numDimensions(); i++) { final AxisType axis = display.axis(i); if (Axes.isXY(axis)) continue; if (overlay.getData().getAxisIndex(axis) < 0) { overlay.setPosition(display.getLongPosition(axis), axis); } } if (drawingView.getSelectedFigures().contains(event.getFigure())) { overlay.setSelected(true); } final OverlayFigureView figureView = new OverlayFigureView(displayViewer, overlay, event.getFigure()); figureViews.add(figureView); display.add(overlay); display.update(); }