diff --git a/LibPeakaboo/src/main/java/org/peakaboo/controller/mapper/settings/MapSettingsController.java b/LibPeakaboo/src/main/java/org/peakaboo/controller/mapper/settings/MapSettingsController.java index f461e45a..91a1fe89 100644 --- a/LibPeakaboo/src/main/java/org/peakaboo/controller/mapper/settings/MapSettingsController.java +++ b/LibPeakaboo/src/main/java/org/peakaboo/controller/mapper/settings/MapSettingsController.java @@ -73,6 +73,8 @@ public float getZoom() { public void setZoom(float zoom) { + if (zoom < 1) zoom = 1; + if (zoom > 50) zoom = 50; this.zoom = zoom; updateListeners(MapUpdateType.UI_OPTIONS); } diff --git a/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/MapperPanel.java b/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/MapperPanel.java index cf1799cd..eb03d0bb 100644 --- a/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/MapperPanel.java +++ b/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/MapperPanel.java @@ -123,6 +123,7 @@ public void mouseMoved(MouseEvent e) { canvas.addMouseMotionListener(movementListener); canvas.addMouseMotionListener(selectionListener); canvas.addMouseListener(selectionListener); + canvas.addMouseWheelListener(selectionListener); controller.addListener(t -> { @@ -148,6 +149,7 @@ private JPanel createCanvasPanel() { canvasScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); canvasScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); canvasScroller.setBorder(new EmptyBorder(0, 0, 0, 0)); + canvasScroller.setWheelScrollingEnabled(false); new DraggingScrollPaneListener(canvasScroller.getViewport(), canvas, Buttons.MIDDLE, Buttons.RIGHT); JPanel canvasContainer = new JPanel(new GridBagLayout()); diff --git a/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/components/MapSelectionListener.java b/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/components/MapSelectionListener.java index 68afb4d1..7ccfe09e 100644 --- a/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/components/MapSelectionListener.java +++ b/SwingUI/src/main/java/org/peakaboo/ui/swing/mapping/components/MapSelectionListener.java @@ -3,6 +3,8 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; import javax.swing.SwingUtilities; @@ -10,7 +12,7 @@ import org.peakaboo.framework.cyclops.Coord; import org.peakaboo.ui.swing.mapping.MapCanvas; -public class MapSelectionListener implements MouseMotionListener, MouseListener { +public class MapSelectionListener implements MouseMotionListener, MouseListener, MouseWheelListener { private MappingController controller; private MapCanvas canvas; @@ -94,5 +96,23 @@ public void mouseDragged(MouseEvent e) { public void mouseMoved(MouseEvent e) { //NOOP } + + @Override + public void mouseWheelMoved(MouseWheelEvent wheel) { + System.out.println("Event " + wheel); + int moves = wheel.getWheelRotation(); + double factor = Math.pow(1.1f, Math.abs(moves)); + + float zoom = controller.getSettings().getZoom(); + if (moves < 0) { + // Scrolled Up + zoom *= factor; + } else { + // Scrolled Down + zoom /= factor; + } + controller.getSettings().setZoom(zoom); + + } }