- Timestamp:
- 2017-11-23T22:10:26+01:00 (6 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/MapStatus.java
r13141 r13154 14 14 import java.awt.Font; 15 15 import java.awt.GridBagLayout; 16 import java.awt.MouseInfo; 16 17 import java.awt.Point; 18 import java.awt.PointerInfo; 17 19 import java.awt.SystemColor; 18 20 import java.awt.Toolkit; … … 76 78 import org.openstreetmap.josm.data.preferences.DoubleProperty; 77 79 import org.openstreetmap.josm.data.preferences.NamedColorProperty; 80 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener; 78 81 import org.openstreetmap.josm.gui.help.Helpful; 79 82 import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor; … … 107 110 */ 108 111 public final class MapStatus extends JPanel implements 109 Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener {112 Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener, ZoomChangeListener { 110 113 111 114 private final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(Config.getPref().get("statusbar.decimal-format", "0.0")); … … 882 885 if (mv.getCenter() == null) 883 886 return; 884 // Do not update the view if ctrl is pressed. 885 if ((e.getModifiersEx() & MouseEvent.CTRL_DOWN_MASK) == 0) { 886 ICoordinateFormat mCord = CoordinateFormatManager.getDefaultFormat(); 887 LatLon p = mv.getLatLon(e.getX(), e.getY()); 888 latText.setText(mCord.latToString(p)); 889 lonText.setText(mCord.lonToString(p)); 890 if (Objects.equals(previousCoordinateFormat, mCord)) { 891 // do nothing 892 } else if (ProjectedCoordinateFormat.INSTANCE.equals(mCord)) { 893 latText.setIcon("northing"); 894 lonText.setIcon("easting"); 895 latText.setToolTipText(tr("The northing at the mouse pointer.")); 896 lonText.setToolTipText(tr("The easting at the mouse pointer.")); 897 previousCoordinateFormat = mCord; 898 } else { 899 latText.setIcon("lat"); 900 lonText.setIcon("lon"); 901 latText.setToolTipText(tr("The geographic latitude at the mouse pointer.")); 902 lonText.setToolTipText(tr("The geographic longitude at the mouse pointer.")); 903 previousCoordinateFormat = mCord; 904 } 887 // Do not update the view if ctrl or right button is pressed. 888 if ((e.getModifiersEx() & (MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON3_DOWN_MASK)) == 0) { 889 updateLatLonText(e.getX(), e.getY()); 905 890 } 906 891 } … … 938 923 939 924 SystemOfMeasurement.addSoMChangeListener(this); 925 NavigatableComponent.addZoomChangeListener(this); 940 926 941 927 latText.addMouseListener(jumpToOnLeftClick); … … 969 955 thread.setDaemon(true); 970 956 thread.start(); 957 } 958 959 private void updateLatLonText(int x, int y) { 960 LatLon p = mv.getLatLon(x, y); 961 ICoordinateFormat mCord = CoordinateFormatManager.getDefaultFormat(); 962 latText.setText(mCord.latToString(p)); 963 lonText.setText(mCord.lonToString(p)); 964 if (Objects.equals(previousCoordinateFormat, mCord)) { 965 // do nothing 966 } else if (ProjectedCoordinateFormat.INSTANCE.equals(mCord)) { 967 latText.setIcon("northing"); 968 lonText.setIcon("easting"); 969 latText.setToolTipText(tr("The northing at the mouse pointer.")); 970 lonText.setToolTipText(tr("The easting at the mouse pointer.")); 971 previousCoordinateFormat = mCord; 972 } else { 973 latText.setIcon("lat"); 974 lonText.setIcon("lon"); 975 latText.setToolTipText(tr("The geographic latitude at the mouse pointer.")); 976 lonText.setToolTipText(tr("The geographic longitude at the mouse pointer.")); 977 previousCoordinateFormat = mCord; 978 } 971 979 } 972 980 … … 1115 1123 public void destroy() { 1116 1124 SystemOfMeasurement.removeSoMChangeListener(this); 1125 NavigatableComponent.removeZoomChangeListener(this); 1117 1126 Config.getPref().removePreferenceChangeListener(this); 1118 1127 SelectionEventManager.getInstance().removeSelectionListener(this); … … 1181 1190 setDist(new SubclassFilteredCollection<OsmPrimitive, Way>(newSelection, Way.class::isInstance)); 1182 1191 } 1192 1193 @Override 1194 public void zoomChanged() { 1195 PointerInfo pointerInfo = MouseInfo.getPointerInfo(); 1196 if (pointerInfo != null) { 1197 Point mp = pointerInfo.getLocation(); 1198 updateLatLonText(mp.x, mp.y); 1199 } 1200 } 1183 1201 } -
trunk/src/org/openstreetmap/josm/gui/MapView.java
r13143 r13154 910 910 } 911 911 912 @Override913 protected void refreshMouse() {914 if (lastMEvent.getWhen() > 0) {915 // This fake movement allows to keep consistent state between mouse position and hilighted primitives, status bar, etc.916 // When the map is not moved by mouse (for example with keyboard shortcuts)917 dispatchEvent(new MouseEvent(this, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0,918 lastMEvent.getX(), lastMEvent.getY(), 0, false));919 }920 }921 922 912 /** 923 913 * Returns the layer manager. -
trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
r13143 r13154 697 697 if (!initial) { 698 698 repaint(); 699 refreshMouse();700 699 fireZoomChanged(); 701 700 } 702 }703 704 protected void refreshMouse() {705 // To be overriden by subclasses handling mouse events706 701 } 707 702
Note:
See TracChangeset
for help on using the changeset viewer.