Ticket #15039: 15039.patch

File 15039.patch, 2.0 KB (added by Adrian, 8 years ago)
  • src/org/openstreetmap/josm/gui/MapSlider.java

     
    44import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    55
    66import java.awt.Dimension;
    7 import java.beans.PropertyChangeEvent;
    8 import java.beans.PropertyChangeListener;
    97
    108import javax.swing.JSlider;
    119import javax.swing.UIManager;
     
    1311import javax.swing.event.ChangeListener;
    1412
    1513import org.openstreetmap.josm.gui.help.Helpful;
     14import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
    1615
    1716/**
    1817 * This is the slider used in the top left corner of the map view. It allows the user to select the scale
    1918 */
    20 class MapSlider extends JSlider implements PropertyChangeListener, ChangeListener, Helpful {
     19class MapSlider extends JSlider implements ZoomChangeListener, ChangeListener, Helpful {
    2120
    2221    private static final double ZOOM_STEP = 1.1;
    2322    private final MapView mv;
     
    2827        super(0, 160);
    2928        setOpaque(false);
    3029        this.mv = mv;
    31         mv.addPropertyChangeListener("scale", this);
     30        NavigatableComponent.addZoomChangeListener(this);
    3231        addChangeListener(this);
    3332        // Call this manually once so it gets setup correctly
    34         propertyChange(null);
     33        zoomChanged();
    3534        int w = UIManager.getDefaults().getInt("Slider.thumbWidth") + 150;
    3635        setPreferredSize(new Dimension(w, 27));
    3736    }
    3837
    3938    @Override
    40     public void propertyChange(PropertyChangeEvent evt) {
     39    public void zoomChanged() {
    4140        double maxScale = this.mv.getMaxScale();
    4241        int zoom = (int) Math.round(Math.log(maxScale/mv.getScale())/Math.log(ZOOM_STEP));
    4342        preventChange = true;
     
    6261            double snapped = mv.scaleFloor(scale);
    6362            mv.zoomTo(this.mv.getCenter(), snapped);
    6463        }
    65         propertyChange(null);
     64        zoomChanged();
    6665    }
    6766
    6867    @Override