@Override public void redo() throws CannotRedoException { super.redo(); addedDrawing.add(addedFigure); } });
private void show(final boolean doShow) { final JHotDrawImageCanvas canvas = displayViewer.getCanvas(); final Drawing drawing = canvas.getDrawing(); final Figure fig = getFigure(); if (doShow) { if (!drawing.contains(fig)) { drawing.add(fig); } } else { if (drawing.contains(fig)) { drawing.remove(fig); } } }
@Override public void redo() throws CannotRedoException { super.redo(); drawing.addAll(importedFigures); } });
@SuppressWarnings("unchecked") @Override public void read(Transferable t, Drawing drawing, boolean replace) throws UnsupportedFlavorException, IOException { try { Drawing d = (Drawing) t.getTransferData(dataFlavor); if (replace) { for (Map.Entry<AttributeKey, Object> e : d.getAttributes().entrySet()) { drawing.set(e.getKey(), e.getValue()); } } for (Figure f : d.getChildren()) { drawing.add(f); } } catch (Throwable th) { th.printStackTrace(); } }
@Override public void run() { Drawing oldDrawing = svgPanel.getDrawing(); svgPanel.setDrawing(newDrawing); firePropertyChange(DRAWING_PROPERTY, oldDrawing, newDrawing); if (oldDrawing != null) { oldDrawing.removeAllChildren(); oldDrawing.removeUndoableEditListener(undo); } undo.discardAllEdits(); newDrawing.addUndoableEditListener(undo); } };
@Override protected void finishCreation(BezierFigure createdFigure, DrawingView creationView) { if (DEBUG) System.out.println("PathTool.finishCreation "+createdFigure); creationView.getDrawing().remove(createdFigure); SVGPathFigure createdPath = createPath(); createdPath.removeAllChildren(); createdPath.add(createdFigure); creationView.getDrawing().add(createdPath); creationView.addToSelection(createdPath); fireUndoEvent(createdPath, creationView); } }
@Override public void undo() throws CannotUndoException { super.undo(); drawing.remove(c); }
public void setData(String text) { if (text != null && text.length() > 0) { StringReader in = new StringReader(text); try { NanoXMLDOMInput domi = new NanoXMLDOMInput(new DrawFigureFactory(), in); setDrawing((Drawing) domi.readObject(0)); } catch (Throwable e) { getDrawing().removeAllChildren(); TextFigure tf = new TextFigure(); tf.setText(e.getMessage()); tf.setBounds(new Point2D.Double(10, 10), new Point2D.Double(100, 100)); getDrawing().add(tf); e.printStackTrace(); } finally { in.close(); } } }
Rectangle2D.Double bounds = createdFigure.getBounds(); if (bounds.width == 0 && bounds.height == 0) { getDrawing().remove(createdFigure); if (isToolDoneAfterCreation()) { fireToolDone(); getDrawing().fireUndoableEditHappened(new AbstractUndoableEdit() {
public void setDrawing(Drawing d) { undoManager.discardAllEdits(); view.getDrawing().removeUndoableEditListener(undoManager); view.setDrawing(d); d.addUndoableEditListener(undoManager); } public Drawing getDrawing() {
public void groupFigures(DrawingView view, CompositeFigure group, Collection<Figure> figures) { Collection<Figure> sorted = view.getDrawing().sort(figures); int index = view.getDrawing().indexOf(sorted.iterator().next()); view.getDrawing().basicRemoveAll(figures); view.clearSelection(); view.getDrawing().add(index, group); group.willChange(); for (Figure f : sorted) { f.willChange(); group.basicAdd(f); } group.changed(); view.addToSelection(group); } }
@SuppressWarnings("unchecked") @Override public void groupFigures(DrawingView view, CompositeFigure group, Collection<Figure> figures) { Collection<Figure> sorted = view.getDrawing().sort(figures); view.getDrawing().basicRemoveAll(figures); view.clearSelection(); view.getDrawing().add(group); group.willChange(); ((ODGPathFigure) group).removeAllChildren(); for (Map.Entry<AttributeKey, Object> entry : figures.iterator().next().getAttributes().entrySet()) { group.set(entry.getKey(), entry.getValue()); } for (Figure f : sorted) { ODGPathFigure path = (ODGPathFigure) f; for (Figure child : path.getChildren()) { group.basicAdd(child); } } group.changed(); view.addToSelection(group); } }
public Collection<Figure> ungroupFigures(DrawingView view, CompositeFigure group) { // XXX - This code is redundant with UngroupAction LinkedList<Figure> figures = new LinkedList<Figure>(group.getChildren()); view.clearSelection(); group.basicRemoveAllChildren(); view.getDrawing().basicAddAll(view.getDrawing().indexOf(group), figures); view.getDrawing().remove(group); view.addToSelection(figures); return figures; }
/** * Configure Drawing object to support copy and paste. */ @SuppressWarnings("unchecked") private void initDrawing(Drawing d) { d.setInputFormats((java.util.List<InputFormat>) Collections.EMPTY_LIST); d.setOutputFormats((java.util.List<OutputFormat>) Collections.EMPTY_LIST); DOMStorableInputOutputFormat ioFormat = new DOMStorableInputOutputFormat( new DrawFigureFactory()); d.addInputFormat(ioFormat); d.addInputFormat(new ImageInputFormat(new ImageFigure())); d.addInputFormat(new TextInputFormat(new TextFigure())); d.addOutputFormat(ioFormat); d.addOutputFormat(new ImageOutputFormat()); }
@Override @SuppressWarnings("unchecked") public Collection<Figure> ungroupFigures(DrawingView view, CompositeFigure group) { LinkedList<Figure> figures = new LinkedList<Figure>(group.getChildren()); view.clearSelection(); group.basicRemoveAllChildren(); LinkedList<Figure> paths = new LinkedList<Figure>(); for (Figure f : figures) { ODGPathFigure path = new ODGPathFigure(); path.removeAllChildren(); for (Map.Entry<AttributeKey, Object> entry : group.getAttributes().entrySet()) { path.set(entry.getKey(), entry.getValue()); } path.add(f); view.getDrawing().basicAdd(path); paths.add(path); } view.getDrawing().remove(group); view.addToSelection(paths); return figures; }
@SuppressWarnings("unchecked") @Override public Transferable createTransferable(Drawing drawing, List<Figure> figures, double scaleFactor) throws IOException { final Drawing d = (Drawing) prototype.clone(); for (Figure f : figures) { Figure df = (Figure) f.clone(); d.add(df); duplicates.add(df); originalToDuplicateMap.put(f, df);
@Override public void setDrawing(@Nullable Drawing newValue) { Drawing oldValue = drawing; if (this.drawing != null) { this.drawing.removeCompositeFigureListener(eventHandler); this.drawing.removeFigureListener(eventHandler); clearSelection(); } this.drawing = newValue; if (this.drawing != null) { this.drawing.addCompositeFigureListener(eventHandler); this.drawing.addFigureListener(eventHandler); } dirtyArea.add(bufferedArea); firePropertyChange(DRAWING_PROPERTY, oldValue, newValue); // Revalidate without flickering revalidate(); validateViewTranslation(); paintEnabled = false; javax.swing.Timer t = new javax.swing.Timer(10, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { repaint(); paintEnabled = true; } }); t.setRepeats(false); t.start(); }
drawing.addCompositeFigureListener(removeListener); drawing.removeAll(selectedFigures); drawing.removeCompositeFigureListener(removeListener); drawing.removeAll(selectedFigures); drawing.fireUndoableEditHappened(new AbstractUndoableEdit() {
/** 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(); }
/** * Manipulates connections in a context dependent way. If the * mouse down hits a figure start a new connection. If the mousedown * hits a connection split a segment or join two segments. */ @Override public void mousePressed(MouseEvent evt) { super.mousePressed(evt); getView().clearSelection(); Point2D.Double startPoint = viewToDrawing(anchor); Figure startFigure = getDrawing().findFigure(startPoint); startConnector = (startFigure == null) ? null : startFigure.findConnector(startPoint, prototype); if (startConnector != null && canConnect(prototype, startConnector)) { Point2D.Double anchor = startConnector.getAnchor(); createdFigure = createFigure(); createdFigure.setStartPoint(anchor); createdFigure.setEndPoint(anchor); getDrawing().add(createdFigure); Rectangle r = new Rectangle(getView().drawingToView(anchor)); r.grow(ANCHOR_WIDTH, ANCHOR_WIDTH); fireAreaInvalidated(r); } else { startConnector = null; createdFigure = null; } endConnector = null; }