From 83723dd41602ac5dffc5140c77a82b736db45af3 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Fri, 8 Feb 2019 11:09:24 +0100 Subject: [PATCH] align rulers with extra space --- .../src/org/diylc/common/IPlugInPort.java | 7 ++++++- .../src/org/diylc/presenter/Presenter.java | 16 ++++++++++++++++ diylc/diylc-swing/lib/swing-framework.jar | Bin 151719 -> 151904 bytes .../swing/plugins/canvas/CanvasPlugin.java | 12 +++++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java index 70a57b3e..b624e00a 100644 --- a/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java +++ b/diylc/diylc-core/src/org/diylc/common/IPlugInPort.java @@ -352,5 +352,10 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP * * @param xAxisFirst */ - void renumberSelectedComponents(boolean xAxisFirst); + void renumberSelectedComponents(boolean xAxisFirst); + + /** + * @return size of extra space around the canvas + */ + double getExtraSpace(); } diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index 322e313e..776a45e8 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -2503,4 +2503,20 @@ public class Presenter implements IPlugInPort { ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, blocks); } } + + @Override + public double getExtraSpace() { + if (!ConfigurationManager.getInstance().readBoolean(EXTRA_SPACE_KEY, true)) + return 0; + + double extraSpace = drawingManager.getExtraSpace(currentProject); + boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY, true); + + extraSpace /= Constants.PIXELS_PER_INCH; + + if (metric) + extraSpace *= SizeUnit.in.getFactor() / SizeUnit.cm.getFactor(); + + return extraSpace; + } } diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar index 1d90f3d039e1b78423216162a601f13a5cab0cb6..0f3769b431a42b0f61a831749a06d13c6e2d5108 100644 GIT binary patch delta 16644 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 OzlsQs{%^-T)c*sE1SPNl diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java index b94c88c8..80647dac 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java @@ -34,6 +34,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.EnumSet; @@ -175,6 +176,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { (canvasPanel.getHeight() - visibleRect.height) / 2); canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.revalidate(); + + double extraSpace = CanvasPlugin.this.plugInPort.getExtraSpace(); + getScrollPane().setZeroLocation(new Point2D.Double(extraSpace, extraSpace)); } }); } @@ -292,8 +296,11 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { plugInPort.setMetric(isMetric); } }); + + double extraSpace = plugInPort.getExtraSpace(); + scrollPane.setZeroLocation(new Point2D.Double(extraSpace, extraSpace)); - // disable scrolling + // disable built-in scrolling mechanism, we'll do it manually scrollPane.setWheelScrollingEnabled(false); scrollPane.addMouseWheelListener(new MouseWheelListener() { @@ -679,6 +686,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.revalidate(); + + double extraSpace = CanvasPlugin.this.plugInPort.getExtraSpace(); + getScrollPane().setZeroLocation(new Point2D.Double(extraSpace, extraSpace)); zoomLevel = (Double) params[0]; break;