@Override public DrawingView findView(Container c) { for (DrawingView v : views) { if (v.getComponent() == c) { return v; } } return null; }
@Override protected void failed(Throwable t) { JOptionPane.showMessageDialog(getView().getComponent(), t.getMessage(), null, JOptionPane.ERROR_MESSAGE); getDrawing().remove(createdFigure); fireToolDone(); } };
@Override protected void failed(Throwable t) { JOptionPane.showMessageDialog(getView().getComponent(), t.getMessage(), null, JOptionPane.ERROR_MESSAGE); getDrawing().remove(createdFigure); fireToolDone(); }
@Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals("value")) { if (evt.getNewValue() != null) { constrainer.setWidth((Double) evt.getNewValue()); constrainer.setHeight((Double) evt.getNewValue()); prefs = PreferencesUtil.userNodeForPackage(getClass()); try { prefs.putDouble("view.gridSize", (Double) evt.getNewValue()); } catch (IllegalStateException e) {//ignore } view.getComponent().repaint(); } } } });
@Override public void run() { if (vRect != null) { vRect.x = (int) (vRect.x / oldFactor * scaleFactor); vRect.y = (int) (vRect.y / oldFactor * scaleFactor); vRect.width = (int) (vRect.width / oldFactor * scaleFactor); vRect.height = (int) (vRect.height / oldFactor * scaleFactor); vRect.x += vRect.width / 3; vRect.y += vRect.height / 3; vRect.width /= 3; vRect.height /= 3; getView().getComponent().scrollRectToVisible(vRect); } } });
/** * Removes the overlay. */ public void endOverlay() { view.getComponent().requestFocus(); if (textField != null) { textField.setVisible(false); view.getComponent().remove(textField); Rectangle bounds = textField.getBounds(); view.getComponent().repaint(bounds.x, bounds.y, bounds.width, bounds.height); } if (editedFigure != null) { editedFigure.removeFigureListener(figureHandler); editedFigure = null; } } }
/** * Creates the overlay for the given Container using a * specific font. */ public void createOverlay(DrawingView view, TextHolderFigure figure) { view.getComponent().add(textField, 0); textField.setText(figure.getText()); textField.setColumns(figure.getTextColumns()); textField.selectAll(); textField.setVisible(true); editedFigure = figure; editedFigure.addFigureListener(figureHandler); this.view = view; updateWidget(); }
@Override protected void failed(Throwable value) { Throwable t = (Throwable) value; JOptionPane.showMessageDialog(getView().getComponent(), t.getMessage(), null, JOptionPane.ERROR_MESSAGE); getDrawing().remove(createdFigure); fireToolDone(); } };
/** * Removes the overlay. */ public void endOverlay() { view.getComponent().requestFocus(); if (editScrollContainer != null) { editScrollContainer.setVisible(false); view.getComponent().remove(editScrollContainer); Rectangle bounds = editScrollContainer.getBounds(); view.getComponent().repaint(bounds.x, bounds.y, bounds.width, bounds.height); } if (editedFigure != null) { editedFigure.removeFigureListener(figureHandler); editedFigure = null; } } }
/** * Creates the overlay for the given Container using a * specific font. * @param view the DrawingView * @param figure the figure holding the text */ public void createOverlay(DrawingView view, @Nullable TextHolderFigure figure) { view.getComponent().add(editScrollContainer, 0); editedFigure = figure; this.view = view; if (editedFigure != null) { editedFigure.addFigureListener(figureHandler); updateWidget(); } }
@Override public void remove(DrawingView view) { view.getComponent().removeFocusListener(focusHandler); views.remove(view); if (tool != null) { view.removeMouseListener(tool); view.removeMouseMotionListener(tool); view.removeKeyListener(tool); } view.removeNotify(this); if (activeView == view) { view = (views.size() > 0) ? views.iterator().next() : null; } updateActiveView(); }
@Override public void areaInvalidated(ToolEvent evt) { Rectangle r = evt.getInvalidatedArea(); evt.getView().getComponent().repaint(r.x, r.y, r.width, r.height); }
private void updateActiveView() { DrawingView aView = null; for (DrawingView v : views) { if (v.getComponent().isFocusOwner()) { setActiveView(v); return; } aView = v; } setActiveView(aView); }
@Override public void mouseDragged(MouseEvent e) { DrawingView v = getView(); Figure f = v.findFigure(e.getPoint()); if (f != null) { if (!v.getSelectedFigures().contains(f)) { v.clearSelection(); v.addToSelection(f); } v.getComponent().getTransferHandler().exportAsDrag(v.getComponent(), e, DnDConstants.ACTION_MOVE); } fireToolDone(); }
@Override protected void done(Object value) { try { if (createdFigure == null) { ((ImageHolderFigure) prototype).setImage(loaderFigure.getImageData(), loaderFigure.getBufferedImage()); } else { ((ImageHolderFigure) createdFigure).setImage(loaderFigure.getImageData(), loaderFigure.getBufferedImage()); } } catch (IOException ex) { JOptionPane.showMessageDialog(getView().getComponent(), ex.getMessage(), null, JOptionPane.ERROR_MESSAGE); } }
@Override public void boundsInvalidated(ToolEvent evt) { Drawing d = evt.getView().getDrawing(); for (DrawingView v : views) { if (v.getDrawing() == d) { JComponent c = v.getComponent(); c.revalidate(); } } } }
@Override protected void done(Object value) { try { if (createdFigure == null) { ((ImageHolderFigure) prototype).setImage(loaderFigure.getImageData(), loaderFigure.getBufferedImage()); } else { ((ImageHolderFigure) createdFigure).setImage(loaderFigure.getImageData(), loaderFigure.getBufferedImage()); } } catch (IOException ex) { JOptionPane.showMessageDialog(getView().getComponent(), ex.getMessage(), null, JOptionPane.ERROR_MESSAGE); } }
@Override public void add(DrawingView view) { views.add(view); view.addNotify(this); view.getComponent().addFocusListener(focusHandler); if (tool != null) { view.addMouseListener(tool); view.addMouseMotionListener(tool); view.addKeyListener(tool); } updateActiveView(); }
@Override public void actionPerformed(java.awt.event.ActionEvent e) { if (button != null) { button.setText(label); } final Rectangle vRect = getView().getComponent().getVisibleRect(); final double oldFactor = getView().getScaleFactor(); getView().setScaleFactor(scaleFactor); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (vRect != null) { vRect.x = (int) (vRect.x / oldFactor * scaleFactor); vRect.y = (int) (vRect.y / oldFactor * scaleFactor); vRect.width = (int) (vRect.width / oldFactor * scaleFactor); vRect.height = (int) (vRect.height / oldFactor * scaleFactor); vRect.x += vRect.width / 3; vRect.y += vRect.height / 3; vRect.width /= 3; vRect.height /= 3; getView().getComponent().scrollRectToVisible(vRect); } } }); }
/** * Adjust the created connection. */ @Override public void mouseDragged(java.awt.event.MouseEvent e) { repaintConnectors(e); if (createdFigure != null) { createdFigure.willChange(); Point2D.Double endPoint = viewToDrawing(new Point(e.getX(), e.getY())); getView().getConstrainer().constrainPoint(endPoint); Figure endFigure = getDrawing().findFigureExcept(endPoint, createdFigure); endConnector = (endFigure == null) ? null : endFigure.findConnector(endPoint, prototype); if (endConnector != null && canConnect(createdFigure, startConnector, endConnector)) { endPoint = endConnector.getAnchor(); } Rectangle r = new Rectangle(getView().drawingToView(createdFigure.getEndPoint())); createdFigure.setEndPoint(endPoint); r.add(getView().drawingToView(endPoint)); r.grow(ANCHOR_WIDTH + 2, ANCHOR_WIDTH + 2); getView().getComponent().repaint(r); createdFigure.changed(); } }