Changeset 13141 in josm


Ignore:
Timestamp:
2017-11-22T01:09:28+01:00 (4 weeks ago)
Author:
Don-vip
Message:

fix #15119 - length of way not displayed in status bar without selection panel

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MapStatus.java

    r12987 r13141  
    3333import java.util.Collection;
    3434import java.util.ConcurrentModificationException;
     35import java.util.Iterator;
    3536import java.util.List;
    3637import java.util.Objects;
     
    5657
    5758import org.openstreetmap.josm.Main;
    58 import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
    59 import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
     59import org.openstreetmap.josm.data.SelectionChangedListener;
    6060import org.openstreetmap.josm.data.SystemOfMeasurement;
    6161import org.openstreetmap.josm.data.SystemOfMeasurement.SoMChangeListener;
     
    6767import org.openstreetmap.josm.data.osm.DataSet;
    6868import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
     69import org.openstreetmap.josm.data.osm.Node;
    6970import org.openstreetmap.josm.data.osm.OsmPrimitive;
    7071import org.openstreetmap.josm.data.osm.Way;
     72import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
     73import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
    7174import org.openstreetmap.josm.data.preferences.AbstractProperty;
    7275import org.openstreetmap.josm.data.preferences.BooleanProperty;
     
    8083import org.openstreetmap.josm.gui.widgets.JosmTextField;
    8184import org.openstreetmap.josm.spi.preferences.Config;
     85import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
     86import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
    8287import org.openstreetmap.josm.tools.ColorHelper;
    8388import org.openstreetmap.josm.tools.Destroyable;
     
    8590import org.openstreetmap.josm.tools.ImageProvider;
    8691import org.openstreetmap.josm.tools.Logging;
     92import org.openstreetmap.josm.tools.SubclassFilteredCollection;
    8793import org.openstreetmap.josm.tools.Utils;
    8894
     
    100106 * @author imi
    101107 */
    102 public final class MapStatus extends JPanel implements Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener {
     108public final class MapStatus extends JPanel implements
     109    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener {
    103110
    104111    private final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(Config.getPref().get("statusbar.decimal-format", "0.0"));
     
    947954
    948955        Config.getPref().addPreferenceChangeListener(this);
     956        SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED);
    949957
    950958        mvComponentAdapter = new ComponentAdapter() {
     
    11081116        SystemOfMeasurement.removeSoMChangeListener(this);
    11091117        Config.getPref().removePreferenceChangeListener(this);
     1118        SelectionEventManager.getInstance().removeSelectionListener(this);
    11101119        mv.removeComponentListener(mvComponentAdapter);
    11111120
     
    11531162        return Math.min(80, 20 + Math.max(0, w-1280) * 60 / (1920-1280));
    11541163    }
     1164
     1165    @Override
     1166    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
     1167        if (newSelection.size() == 2) {
     1168            Iterator<? extends OsmPrimitive> it = newSelection.iterator();
     1169            OsmPrimitive n1 = it.next();
     1170            OsmPrimitive n2 = it.next();
     1171            // show distance between two selected nodes with coordinates
     1172            if (n1 instanceof Node && n2 instanceof Node) {
     1173                LatLon c1 = ((Node) n1).getCoor();
     1174                LatLon c2 = ((Node) n2).getCoor();
     1175                if (c1 != null && c2 != null) {
     1176                    setDist(c1.greatCircleDistance(c2));
     1177                    return;
     1178                }
     1179            }
     1180        }
     1181        setDist(new SubclassFilteredCollection<OsmPrimitive, Way>(newSelection, Way.class::isInstance));
     1182    }
    11551183}
  • trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

    r12909 r13141  
    1919import java.util.Comparator;
    2020import java.util.HashSet;
    21 import java.util.Iterator;
    2221import java.util.LinkedList;
    2322import java.util.List;
     
    4443import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
    4544import org.openstreetmap.josm.data.SelectionChangedListener;
    46 import org.openstreetmap.josm.data.coor.LatLon;
    4745import org.openstreetmap.josm.data.osm.DataSet;
    4846import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
     
    6765import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    6866import org.openstreetmap.josm.gui.MainApplication;
    69 import org.openstreetmap.josm.gui.MapFrame;
    7067import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
    7168import org.openstreetmap.josm.gui.PopupMenuHandler;
     
    8582import org.openstreetmap.josm.tools.InputMapUtils;
    8683import org.openstreetmap.josm.tools.Shortcut;
    87 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
    8884import org.openstreetmap.josm.tools.Utils;
    8985import org.openstreetmap.josm.tools.bugreport.BugReport;
     
    618614                    if (selection != null) {
    619615                        remember(selection);
    620                         MapFrame map = MainApplication.getMap();
    621                         if (selection.size() == 2) {
    622                             Iterator<? extends OsmPrimitive> it = selection.iterator();
    623                             OsmPrimitive n1 = it.next();
    624                             OsmPrimitive n2 = it.next();
    625                             // show distance between two selected nodes with coordinates
    626                             if (n1 instanceof Node && n2 instanceof Node) {
    627                                 LatLon c1 = ((Node) n1).getCoor();
    628                                 LatLon c2 = ((Node) n2).getCoor();
    629                                 if (c1 != null && c2 != null) {
    630                                     map.statusLine.setDist(c1.greatCircleDistance(c2));
    631                                     return;
    632                                 }
    633                             }
    634                         }
    635                         map.statusLine.setDist(
    636                                 new SubclassFilteredCollection<OsmPrimitive, Way>(selection, Way.class::isInstance));
    637616                    }
    638617                }
     
    695674
    696675        /* ------------------------------------------------------------------------ */
    697         /* interface SelectionChangeListener                                        */
     676        /* interface SelectionChangedListener                                       */
    698677        /* ------------------------------------------------------------------------ */
    699678        @Override
Note: See TracChangeset for help on using the changeset viewer.