add keyboard shortcuts for zoom

This commit is contained in:
bancika
2020-09-16 09:28:08 +02:00
parent 632dff3e2c
commit b1b3d2ef9c
7 changed files with 45 additions and 3 deletions
@@ -257,10 +257,10 @@ public class Presenter implements IPlugInPort {
@Override
public void setZoomLevel(double zoomLevel) {
LOG.info(String.format("setZoomLevel(%s)", zoomLevel));
if (drawingManager.getZoomLevel() == zoomLevel) {
return;
}
LOG.info(String.format("setZoomLevel(%s)", zoomLevel));
drawingManager.setZoomLevel(zoomLevel);
}
@@ -3166,6 +3166,10 @@
<releaseDate>2020-09-04 00:00:00.000 CET</releaseDate>
<name></name>
<changes>
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Added keyboard shortcuts for zoom in and out using standard Ctrl and +/- key combination</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Improved rendering precision, especially when using metric units</description>
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -36,6 +36,7 @@ import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
import java.awt.image.VolatileImage;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
@@ -136,6 +137,11 @@ public class CanvasPanel extends JComponent implements Autoscroll {
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "clearSlot");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_DOWN_MASK), "zoomIn");
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, KeyEvent.CTRL_DOWN_MASK), "zoomOut");
for (int i = 1; i <= 12; i++) {
final int x = i;
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
@@ -151,6 +157,36 @@ public class CanvasPanel extends JComponent implements Autoscroll {
});
}
getActionMap().put("zoomIn", new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e) {
LOG.debug("Keyboard zoom-in triggered");
double oldZoom = CanvasPanel.this.plugInPort.getZoomLevel();
Double[] availableZoomLevels = CanvasPanel.this.plugInPort.getAvailableZoomLevels();
int index = Arrays.binarySearch(availableZoomLevels, oldZoom);
if (index < availableZoomLevels.length - 1)
CanvasPanel.this.plugInPort.setZoomLevel(availableZoomLevels[index + 1]);
}
});
getActionMap().put("zoomOut", new AbstractAction() {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e) {
LOG.debug("Keyboard zoom-out triggered");
double oldZoom = CanvasPanel.this.plugInPort.getZoomLevel();
Double[] availableZoomLevels = CanvasPanel.this.plugInPort.getAvailableZoomLevels();
int index = Arrays.binarySearch(availableZoomLevels, oldZoom);
if (index > 0)
CanvasPanel.this.plugInPort.setZoomLevel(availableZoomLevels[index - 1]);
}
});
getActionMap().put("clearSlot", new AbstractAction() {
private static final long serialVersionUID = 1L;
@@ -214,7 +214,9 @@ public class StatusBar extends JPanel implements IPlugIn {
@Override
public void actionPerformed(ActionEvent e) {
plugInPort.setZoomLevel((Double) zoomBox.getSelectedItem());
Double newZoom = (Double) zoomBox.getSelectedItem();
if (!newZoom.equals(plugInPort.getZoomLevel()))
plugInPort.setZoomLevel((Double) zoomBox.getSelectedItem());
}
});
}