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
@@ -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();
}
@@ -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;
}
}
Binary file not shown.
@@ -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;