align rulers with extra space

This commit is contained in:
Branislav Stojkovic
2019-02-08 11:09:24 +01:00
parent 7597143b1b
commit 83723dd416
4 changed files with 33 additions and 2 deletions
@@ -353,4 +353,9 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP
* @param xAxisFirst * @param xAxisFirst
*/ */
void renumberSelectedComponents(boolean xAxisFirst); void renumberSelectedComponents(boolean xAxisFirst);
/**
* @return size of extra space around the canvas
*/
double getExtraSpace();
} }
@@ -2503,4 +2503,20 @@ public class Presenter implements IPlugInPort {
ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, blocks); 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;
}
} }
Binary file not shown.
@@ -34,6 +34,7 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener; import java.awt.event.MouseWheelListener;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet; import java.util.EnumSet;
@@ -175,6 +176,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
(canvasPanel.getHeight() - visibleRect.height) / 2); (canvasPanel.getHeight() - visibleRect.height) / 2);
canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.scrollRectToVisible(visibleRect);
canvasPanel.revalidate(); canvasPanel.revalidate();
double extraSpace = CanvasPlugin.this.plugInPort.getExtraSpace();
getScrollPane().setZeroLocation(new Point2D.Double(extraSpace, extraSpace));
} }
}); });
} }
@@ -293,7 +297,10 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
} }
}); });
// disable scrolling double extraSpace = plugInPort.getExtraSpace();
scrollPane.setZeroLocation(new Point2D.Double(extraSpace, extraSpace));
// disable built-in scrolling mechanism, we'll do it manually
scrollPane.setWheelScrollingEnabled(false); scrollPane.setWheelScrollingEnabled(false);
scrollPane.addMouseWheelListener(new MouseWheelListener() { scrollPane.addMouseWheelListener(new MouseWheelListener() {
@@ -680,6 +687,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.scrollRectToVisible(visibleRect);
canvasPanel.revalidate(); canvasPanel.revalidate();
double extraSpace = CanvasPlugin.this.plugInPort.getExtraSpace();
getScrollPane().setZeroLocation(new Point2D.Double(extraSpace, extraSpace));
zoomLevel = (Double) params[0]; zoomLevel = (Double) params[0];
break; break;
case REPAINT: case REPAINT: