mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-11 01:32:08 +10:00
Configurable wheel zoom
This commit is contained in:
+25
-19
@@ -28,6 +28,8 @@ public class CanvasPlugin implements IPlugIn {
|
|||||||
|
|
||||||
private static final Logger LOG = Logger.getLogger(CanvasPlugin.class);
|
private static final Logger LOG = Logger.getLogger(CanvasPlugin.class);
|
||||||
|
|
||||||
|
private static final String WHEEL_ZOOM = "wheelZoom";
|
||||||
|
|
||||||
private RulerScrollPane scrollPane;
|
private RulerScrollPane scrollPane;
|
||||||
private CanvasPanel canvasPanel;
|
private CanvasPanel canvasPanel;
|
||||||
private IPlugInPort plugInPort;
|
private IPlugInPort plugInPort;
|
||||||
@@ -62,8 +64,9 @@ public class CanvasPlugin implements IPlugIn {
|
|||||||
SizeUnit.in).convertToPixels());
|
SizeUnit.in).convertToPixels());
|
||||||
boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY,
|
boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY,
|
||||||
true);
|
true);
|
||||||
|
boolean wheelZoom = ConfigurationManager.getInstance().readBoolean(WHEEL_ZOOM, false);
|
||||||
scrollPane.setMetric(metric);
|
scrollPane.setMetric(metric);
|
||||||
scrollPane.setWheelScrollingEnabled(false);
|
scrollPane.setWheelScrollingEnabled(!wheelZoom);
|
||||||
scrollPane.addUnitListener(new IRulerListener() {
|
scrollPane.addUnitListener(new IRulerListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -71,27 +74,30 @@ public class CanvasPlugin implements IPlugIn {
|
|||||||
plugInPort.setMetric(isMetric);
|
plugInPort.setMetric(isMetric);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
scrollPane.addMouseWheelListener(new MouseWheelListener() {
|
if (wheelZoom) {
|
||||||
|
scrollPane.addMouseWheelListener(new MouseWheelListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseWheelMoved(MouseWheelEvent e) {
|
public void mouseWheelMoved(MouseWheelEvent e) {
|
||||||
double d = plugInPort.getZoomLevel();
|
double d = plugInPort.getZoomLevel();
|
||||||
Double[] availableZoomLevels = plugInPort.getAvailableZoomLevels();
|
Double[] availableZoomLevels = plugInPort.getAvailableZoomLevels();
|
||||||
if (e.getWheelRotation() > 0) {
|
if (e.getWheelRotation() > 0) {
|
||||||
int i = availableZoomLevels.length - 1;
|
int i = availableZoomLevels.length - 1;
|
||||||
while (i > 0 && availableZoomLevels[i] >= d) {
|
while (i > 0 && availableZoomLevels[i] >= d) {
|
||||||
i--;
|
i--;
|
||||||
|
}
|
||||||
|
plugInPort.setZoomLevel(availableZoomLevels[i]);
|
||||||
|
} else {
|
||||||
|
int i = 0;
|
||||||
|
while (i < availableZoomLevels.length - 1
|
||||||
|
&& availableZoomLevels[i] <= d) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
plugInPort.setZoomLevel(availableZoomLevels[i]);
|
||||||
}
|
}
|
||||||
plugInPort.setZoomLevel(availableZoomLevels[i]);
|
|
||||||
} else {
|
|
||||||
int i = 0;
|
|
||||||
while (i < availableZoomLevels.length - 1 && availableZoomLevels[i] <= d) {
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
plugInPort.setZoomLevel(availableZoomLevels[i]);
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
return scrollPane;
|
return scrollPane;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user