Ticket #12539: ZoomReverseWheel.patch

File ZoomReverseWheel.patch, 6.2 KB (added by kolesar, 10 years ago)
  • src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java

    diff --git a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
    index fb54d8a..b63a59a 100644
    a b MouseWheelListener {  
    8282    @Override
    8383    public void mouseWheelMoved(MouseWheelEvent e) {
    8484        if (wheelZoomEnabled) {
    85             map.setZoom(map.getZoom() - e.getWheelRotation(), e.getPoint());
     85            int rotation = JMapViewer.zoomReverseWheel ? -e.getWheelRotation() : e.getWheelRotation();
     86            map.setZoom(map.getZoom() - rotation, e.getPoint());
    8687        }
    8788    }
    8889
  • src/org/openstreetmap/gui/jmapviewer/JMapViewer.java

    diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
    index cc08aa9..79792c9 100644
    a b public class JMapViewer extends JPanel implements TileLoaderListener {  
    4646    /** whether debug mode is enabled or not */
    4747    public static boolean debug;
    4848
     49    /** option to reverse zoom direction with mouse wheel */
     50    public static boolean zoomReverseWheel;
     51
    4952    /**
    5053     * Vectors for clock-wise tile painting
    5154     */
  • src/org/openstreetmap/josm/gui/MapMover.java

    diff --git a/src/org/openstreetmap/josm/gui/MapMover.java b/src/org/openstreetmap/josm/gui/MapMover.java
    index 5580884..21dadf8 100644
    a b import javax.swing.JComponent;  
    2020import javax.swing.JPanel;
    2121import javax.swing.KeyStroke;
    2222
     23import org.openstreetmap.gui.jmapviewer.JMapViewer;
     24
    2325import org.openstreetmap.josm.Main;
    2426import org.openstreetmap.josm.actions.mapmode.SelectAction;
    2527import org.openstreetmap.josm.data.coor.EastNorth;
     28import org.openstreetmap.josm.data.preferences.BooleanProperty;
     29import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
     30import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    2631import org.openstreetmap.josm.tools.Destroyable;
    2732import org.openstreetmap.josm.tools.Shortcut;
    2833
    import org.openstreetmap.josm.tools.Shortcut;  
    3439 */
    3540public class MapMover extends MouseAdapter implements MouseMotionListener, MouseWheelListener, Destroyable {
    3641
     42    public static final BooleanProperty PROP_ZOOM_REVERSE_WHEEL = new BooleanProperty("zoom.reverse-wheel", false);
     43
     44    private static final JMapViewerUpdater jMapViewerUpdater = new JMapViewerUpdater();
     45
     46    private static class JMapViewerUpdater implements PreferenceChangedListener {
     47
     48        JMapViewerUpdater() {
     49            Main.pref.addPreferenceChangeListener(this);
     50            updateJMapViewer();
     51        }
     52
     53        @Override
     54        public void preferenceChanged(PreferenceChangeEvent e) {
     55            if (MapMover.PROP_ZOOM_REVERSE_WHEEL.getKey().equals(e.getKey())) {
     56                updateJMapViewer();
     57            }
     58        }
     59
     60        private void updateJMapViewer() {
     61            JMapViewer.zoomReverseWheel = MapMover.PROP_ZOOM_REVERSE_WHEEL.get();
     62        }
     63    }
     64
    3765    private final class ZoomerAction extends AbstractAction {
    3866        private final String action;
    3967
    public class MapMover extends MouseAdapter implements MouseMotionListener, Mouse  
    213241     */
    214242    @Override
    215243    public void mouseWheelMoved(MouseWheelEvent e) {
    216         nc.zoomManyTimes(e.getX(), e.getY(), e.getWheelRotation());
     244        int rotation = PROP_ZOOM_REVERSE_WHEEL.get() ? -e.getWheelRotation() : e.getWheelRotation();
     245        nc.zoomManyTimes(e.getX(), e.getY(), rotation);
    217246    }
    218247
    219248    /**
  • src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
    index f30057f..3d80963 100644
    a b import javax.swing.UIManager.LookAndFeelInfo;  
    2222
    2323import org.openstreetmap.josm.Main;
    2424import org.openstreetmap.josm.actions.ExpertToggleAction;
     25import org.openstreetmap.josm.gui.MapMover;
    2526import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
    2627import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    2728import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    public class LafPreference implements SubPreferenceSetting {  
    6162    private final JCheckBox dynamicButtons = new JCheckBox(tr("Dynamic buttons in side menus"));
    6263    private final JCheckBox isoDates = new JCheckBox(tr("Display ISO dates"));
    6364    private final JCheckBox nativeFileChoosers = new JCheckBox(tr("Use native file choosers (nicer, but do not support file filters)"));
     65    private final JCheckBox zoomReverseWheel = new JCheckBox(tr("Reverse zoom with mouse wheel"));
    6466
    6567    @Override
    6668    public void addGui(PreferenceTabbedPane gui) {
    public class LafPreference implements SubPreferenceSetting {  
    140142        nativeFileChoosers.setSelected(FileChooserManager.PROP_USE_NATIVE_FILE_DIALOG.get());
    141143        panel.add(nativeFileChoosers, GBC.eop().insets(20, 0, 0, 0));
    142144
     145        zoomReverseWheel.setToolTipText(
     146                tr("Check if you feel opposite direction more convenient"));
     147        zoomReverseWheel.setSelected(MapMover.PROP_ZOOM_REVERSE_WHEEL.get());
     148        panel.add(zoomReverseWheel, GBC.eop().insets(20, 0, 0, 0));
     149
    143150        panel.add(Box.createVerticalGlue(), GBC.eol().insets(0, 20, 0, 0));
    144151
    145152        panel.add(new JLabel(tr("Look and Feel")), GBC.std().insets(20, 0, 0, 0));
    public class LafPreference implements SubPreferenceSetting {  
    161168        Main.pref.put(ToggleDialog.PROP_DYNAMIC_BUTTONS.getKey(), dynamicButtons.isSelected());
    162169        Main.pref.put(DateUtils.PROP_ISO_DATES.getKey(), isoDates.isSelected());
    163170        Main.pref.put(FileChooserManager.PROP_USE_NATIVE_FILE_DIALOG.getKey(), nativeFileChoosers.isSelected());
     171        Main.pref.put(MapMover.PROP_ZOOM_REVERSE_WHEEL.getKey(), zoomReverseWheel.isSelected());
    164172        mod |= Main.pref.put("laf", ((LookAndFeelInfo) lafCombo.getSelectedItem()).getClassName());
    165173        return mod;
    166174    }