Ticket #11823: 11823-alpha.patch

File 11823-alpha.patch, 3.8 KB (added by simon04, 11 years ago)
  • src/org/openstreetmap/josm/gui/MapFrame.java

    commit 7f96af80faed001f381e58b3badfbcc6747fc678
    Author: Simon Legner <Simon.Legner@gmail.com>
    Date:   Mon Aug 31 23:53:51 2015 +0200
    
        v1
    
    diff --git a/src/org/openstreetmap/josm/gui/MapFrame.java b/src/org/openstreetmap/josm/gui/MapFrame.java
    index 1a7f72e..723ebd9 100644
    a b  
    6666import org.openstreetmap.josm.gui.dialogs.FilterDialog;
    6767import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    6868import org.openstreetmap.josm.gui.dialogs.MapPaintDialog;
     69import org.openstreetmap.josm.gui.dialogs.MinimapDialog;
    6970import org.openstreetmap.josm.gui.dialogs.NotesDialog;
    7071import org.openstreetmap.josm.gui.dialogs.RelationListDialog;
    7172import org.openstreetmap.josm.gui.dialogs.SelectionListDialog;
    public void setBorder(Border b) {  
    238239        addToggleDialog(propertiesDialog = new PropertiesDialog());
    239240        addToggleDialog(selectionListDialog = new SelectionListDialog());
    240241        addToggleDialog(relationListDialog = new RelationListDialog());
     242        addToggleDialog(new MinimapDialog());
    241243        addToggleDialog(new CommandStackDialog());
    242244        addToggleDialog(new UserListDialog());
    243245        addToggleDialog(conflictDialog = new ConflictDialog());
  • new file src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
    new file mode 100644
    index 0000000..463e828
    - +  
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.gui.dialogs;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
     6import java.beans.PropertyChangeEvent;
     7import java.beans.PropertyChangeListener;
     8import java.util.Collections;
     9
     10import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.data.Bounds;
     12import org.openstreetmap.josm.gui.MapView;
     13import org.openstreetmap.josm.gui.NavigatableComponent;
     14import org.openstreetmap.josm.gui.SideButton;
     15import org.openstreetmap.josm.gui.bbox.BBoxChooser;
     16import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
     17
     18public class MinimapDialog extends ToggleDialog implements NavigatableComponent.ZoomChangeListener, PropertyChangeListener {
     19
     20    protected final SlippyMapBBoxChooser slippyMap = new SlippyMapBBoxChooser();
     21    protected boolean skipEvents;
     22
     23    public MinimapDialog() {
     24        super(tr("Mini map"), "map", tr("Displays a small map of the current edit location"), null, 150);
     25        createLayout(slippyMap, false, Collections.<SideButton>emptyList());
     26        slippyMap.addPropertyChangeListener(BBoxChooser.BBOX_PROP, this);
     27    }
     28
     29    @Override
     30    public void showDialog() {
     31        NavigatableComponent.addZoomChangeListener(this);
     32        super.showDialog();
     33    }
     34
     35    @Override
     36    public void hideDialog() {
     37        NavigatableComponent.removeZoomChangeListener(this);
     38        super.hideDialog();
     39    }
     40
     41    @Override
     42    public void zoomChanged() {
     43        if (Main.isDisplayingMapView() && !skipEvents) {
     44            MapView mv = Main.map.mapView;
     45            final Bounds currentBounds = new Bounds(
     46                    mv.getLatLon(0, mv.getHeight()),
     47                    mv.getLatLon(mv.getWidth(), 0)
     48            );
     49            skipEvents = true;
     50            slippyMap.setBoundingBox(currentBounds);
     51            slippyMap.zoomOut(); // again, to give a better overview
     52            skipEvents = false;
     53        }
     54    }
     55
     56    @Override
     57    public void propertyChange(PropertyChangeEvent evt) {
     58        System.out.println(evt.getSource());
     59        if (!skipEvents) {
     60            skipEvents = true;
     61            Main.map.mapView.zoomTo(slippyMap.getBoundingBox());
     62            skipEvents = false;
     63        }
     64    }
     65}