@Override public void propertyChange(PropertyChangeEvent evt) { // String constants are interned if (evt.getPropertyName() == "scaleFactor") { zoomPopupButton.setText((int) (view.getScaleFactor() * 100) + " %"); } } });
@Override public void actionPerformed(java.awt.event.ActionEvent e) { super.actionPerformed(e); zoomPopupButton.setText((int) (view.getScaleFactor() * 100) + " %"); } });
@Override public void propertyChange(PropertyChangeEvent evt) { // String constants are interned if (evt.getPropertyName() == DrawingEditor.ACTIVE_VIEW_PROPERTY) { if (evt.getNewValue() == null) { zoomPopupButton.setText("100 %"); } else { zoomPopupButton.setText((int) (editor.getActiveView().getScaleFactor() * 100) + " %"); } } } });
protected BezierPath calculateFittedCurve(BezierPath path) { return Bezier.fitBezierPath(path, 1.5d / getView().getScaleFactor()); }
if (width * view.getScaleFactor() > 2) { g.setColor(minorColor); for (int i = (int) (origin.x / width), m = (int) ((origin.x + bounds.width) / width) + 1; i <= m; i++) { (int) viewPoint.x, (int) (viewBounds.y + viewBounds.height)); } else if (width * majorGridSpacing * view.getScaleFactor() > 2) { g.setColor(majorColor); for (int i = (int) (origin.x / width), m = (int) ((origin.x + bounds.width) / width) + 1; i <= m; i++) { if (height * view.getScaleFactor() > 2) { g.setColor(minorColor); for (int i = (int) (origin.y / height), m = (int) ((origin.y + bounds.height) / height) + 1; i <= m; i++) { (int) (viewBounds.x + viewBounds.width), (int) viewPoint.y); } else if (height * majorGridSpacing * view.getScaleFactor() > 2) { g.setColor(majorColor); for (int i = (int) (origin.y / height), m = (int) ((origin.y + bounds.height) / height) + 1; i <= m; i++) {
protected void updateWidget() { Font f = editedFigure.getFont(); // FIXME - Should scale with fractional value! f = f.deriveFont(f.getStyle(), (float) (editedFigure.getFontSize() * view.getScaleFactor())); textArea.setFont(f); textArea.setForeground(editedFigure.getTextColor()); textArea.setBackground(editedFigure.getFillColor()); // textArea.setBounds(getFieldBounds(editedFigure)); }
@Override protected Point2D.Double getOrigin() { // This handle is placed above the figure. // We move it up by a handlesizes, so that it won't overlap with // the handles from TransformHandleKit. Rectangle2D.Double bounds = getTransformedBounds(); Point2D.Double origin = new Point2D.Double(bounds.getCenterX(), bounds.y - getHandlesize() / view.getScaleFactor()); return origin; } }
@Override public void actionPerformed(java.awt.event.ActionEvent e) { super.actionPerformed(e); zoomPopupButton.setText((int) (editor.getActiveView().getScaleFactor() * 100) + " %"); } });
/** * Handles a mouse click. */ @Override public boolean handleMouseClick(Point2D.Double p, MouseEvent evt, DrawingView view) { if (evt.getClickCount() == 2 && view.getHandleDetailLevel() % 2 == 0) { for (Figure child : getChildren()) { SVGBezierFigure bf = (SVGBezierFigure) child; int index = bf.findSegment(p, 5f / view.getScaleFactor()); if (index != -1) { bf.handleMouseClick(p, evt, view); evt.consume(); return true; } } } return false; }
/** * Handles a mouse click. */ @Override public boolean handleMouseClick(Point2D.Double p, MouseEvent evt, DrawingView view) { if (evt.getClickCount() == 2 && view.getHandleDetailLevel() % 2 == 0) { for (Figure child : getChildren()) { ODGBezierFigure bf = (ODGBezierFigure) child; int index = bf.getBezierPath().findSegment(p, 5f / view.getScaleFactor()); if (index != -1) { bf.handleMouseClick(p, evt, view); evt.consume(); return true; } } } return false; }
@Override public boolean handleMouseClick(Point2D.Double p, MouseEvent evt, DrawingView view) { if (evt.getClickCount() == 2/* && view.getHandleDetailLevel() == 0*/) { willChange(); final int index = splitSegment(p, (float) (5f / view.getScaleFactor())); if (index != -1) { final BezierPath.Node newNode = getNode(index); fireUndoableEditHappened(new AbstractUndoableEdit() { @Override public void redo() throws CannotRedoException { super.redo(); willChange(); addNode(index, newNode); changed(); } @Override public void undo() throws CannotUndoException { super.undo(); willChange(); removeNode(index); changed(); } }); changed(); evt.consume(); return true; } } return false; }
if (evt.getClickCount() == 2 && view.getHandleDetailLevel() % 2 == 0) { willChange(); final int index = splitSegment(p, 5f / view.getScaleFactor()); if (index != -1) { final BezierPath.Node newNode = getNode(index);
protected void updateWidget() { Font font = editedFigure.getFont(); font = font.deriveFont(font.getStyle(), (float) (editedFigure.getFontSize() * view.getScaleFactor())); textField.setFont(font); textField.setForeground(editedFigure.getTextColor()); textField.setBackground(editedFigure.getFillColor()); Rectangle2D.Double fDrawBounds = editedFigure.getBounds(); Point2D.Double fDrawLoc = new Point2D.Double(fDrawBounds.getX(), fDrawBounds.getY()); if (editedFigure.get(TRANSFORM) != null) { editedFigure.get(TRANSFORM).transform(fDrawLoc, fDrawLoc); } Point fViewLoc = view.drawingToView(fDrawLoc); Rectangle fViewBounds = view.drawingToView(fDrawBounds); fViewBounds.x = fViewLoc.x; fViewBounds.y = fViewLoc.y; Dimension tfDim = textField.getPreferredSize(); Insets tfInsets = textField.getInsets(); float fontBaseline = textField.getGraphics().getFontMetrics(font).getMaxAscent(); double fBaseline = editedFigure.getBaseline() * view.getScaleFactor(); textField.setBounds( fViewBounds.x - tfInsets.left, fViewBounds.y - tfInsets.top - (int) (fontBaseline - fBaseline), Math.max(fViewBounds.width + tfInsets.left + tfInsets.right, tfDim.width), Math.max(fViewBounds.height + tfInsets.top + tfInsets.bottom, tfDim.height) ); }
if (evt.getClickCount() == 2 && view.getHandleDetailLevel() == 0) { willChange(); final int index = splitSegment(p, (float) (5f / view.getScaleFactor())); if (index != -1) { final BezierPath.Node newNode = getNode(index);
&& evt.getClickCount() == 2) { willChange(); final int index = splitSegment(p, (float) (5f / view.getScaleFactor())); if (index != -1) { final BezierPath.Node newNode = getNode(index);
@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); } } }); }
zoomPopupButton.setText("100 %"); } else { zoomPopupButton.setText((int) (editor.getDrawingViews().iterator().next().getScaleFactor() * 100) + " %");
drawing, toBeCopied, view.getScaleFactor()); if (!transfer.isDataFlavorSupported(t.getTransferDataFlavors()[0])) { transfer.add(t);
public static AbstractButton createZoomButton(final DrawingView view, double[] factors) { ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels"); final JPopupButton zoomPopupButton = new JPopupButton(); labels.configureToolBarButton(zoomPopupButton, "view.zoomFactor"); zoomPopupButton.setFocusable(false); zoomPopupButton.setText((int) (view.getScaleFactor() * 100) + " %"); view.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { // String constants are interned if (evt.getPropertyName() == "scaleFactor") { zoomPopupButton.setText((int) (view.getScaleFactor() * 100) + " %"); } } }); for (int i = 0; i < factors.length; i++) { zoomPopupButton.add( new ZoomAction(view, factors[i], zoomPopupButton) { @Override public void actionPerformed(java.awt.event.ActionEvent e) { super.actionPerformed(e); zoomPopupButton.setText((int) (view.getScaleFactor() * 100) + " %"); } }); } //zoomPopupButton.setPreferredSize(new Dimension(16,16)); zoomPopupButton.setFocusable(false); return zoomPopupButton; }
protected void addPointToFigure(Point2D.Double newPoint) { int pointCount = createdFigure.getNodeCount(); createdFigure.willChange(); if (pointCount < 2) { createdFigure.addNode(new BezierPath.Node(newPoint)); } else { Point2D.Double endPoint = createdFigure.getEndPoint(); Point2D.Double secondLastPoint = (pointCount <= 1) ? endPoint : createdFigure.getPoint(pointCount - 2, 0); if (newPoint.equals(endPoint)) { // nothing to do } else if (pointCount > 1 && Geom.lineContainsPoint(newPoint.x, newPoint.y, secondLastPoint.x, secondLastPoint.y, endPoint.x, endPoint.y, 0.9f / getView().getScaleFactor())) { createdFigure.setPoint(pointCount - 1, 0, newPoint); } else { createdFigure.addNode(new BezierPath.Node(newPoint)); } } createdFigure.changed(); }