Changeset 16162 in osm for applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/JumpToAction.java
- Timestamp:
- 2009-06-26T22:11:40+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/utilsplugin/src/UtilsPlugin/JumpToAction.java
r13575 r16162 4 4 5 5 import java.awt.BorderLayout; 6 import java.awt. Component;6 import java.awt.GridBagLayout; 7 7 import java.awt.event.ActionEvent; 8 import java.awt.event.InputEvent;9 8 import java.awt.event.KeyEvent; 9 import java.awt.event.MouseEvent; 10 10 import java.awt.event.MouseListener; 11 import java.awt.event.MouseEvent;12 import java.awt.GridBagLayout;13 import java.awt.GridLayout;14 import java.awt.Toolkit;15 11 16 import javax.swing.Box;17 import javax.swing.event.DocumentListener;18 import javax.swing.event.DocumentEvent;19 import javax.swing.JComponent;20 import javax.swing.JDialog;21 12 import javax.swing.JLabel; 22 13 import javax.swing.JOptionPane; 23 14 import javax.swing.JPanel; 24 15 import javax.swing.JTextField; 25 import javax.swing.KeyStroke; 16 import javax.swing.event.DocumentEvent; 17 import javax.swing.event.DocumentListener; 26 18 27 19 import org.openstreetmap.josm.Main; 28 20 import org.openstreetmap.josm.actions.JosmAction; 29 21 import org.openstreetmap.josm.data.Bounds; 30 import org.openstreetmap.josm.data.coor.EastNorth;31 22 import org.openstreetmap.josm.data.coor.LatLon; 32 import org.openstreetmap.josm.gui.dialogs.ToggleDialog; 33 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor; 23 import org.openstreetmap.josm.gui.NavigatableComponent; 34 24 import org.openstreetmap.josm.tools.GBC; 35 25 import org.openstreetmap.josm.tools.OsmUrlToBounds; … … 41 31 KeyEvent.VK_G, Shortcut.GROUP_HOTKEY), true); 42 32 } 43 33 44 34 private JTextField url = new JTextField(); 45 35 private JTextField lat = new JTextField(); 46 36 private JTextField lon = new JTextField(); 47 37 private JTextField zm = new JTextField(); 48 38 49 39 private double zoomFactor = 0; 50 40 public void showJumpToDialog() { … … 52 42 lat.setText(java.lang.Double.toString(curPos.lat())); 53 43 lon.setText(java.lang.Double.toString(curPos.lon())); 54 44 55 45 LatLon ll1 = Main.map.mapView.getLatLon(0,0); 56 46 LatLon ll2 = Main.map.mapView.getLatLon(100,0); 57 47 double dist = ll1.greatCircleDistance(ll2); 58 48 zoomFactor = Main.map.mapView.getScale()/dist; 59 49 60 50 zm.setText(java.lang.Long.toString(Math.round(dist*100)/100)); 61 51 updateUrl(true); 62 52 63 53 JPanel panel = new JPanel(new BorderLayout()); 64 54 panel.add(new JLabel("<html>" … … 69 59 + "</html>"), 70 60 BorderLayout.NORTH); 71 72 class osmURLListener implements DocumentListener { 73 public void changedUpdate(DocumentEvent e) { parseURL(); } 74 public void insertUpdate(DocumentEvent e) { parseURL(); } 75 public void removeUpdate(DocumentEvent e) { parseURL(); } 61 62 class osmURLListener implements DocumentListener { 63 public void changedUpdate(DocumentEvent e) { parseURL(); } 64 public void insertUpdate(DocumentEvent e) { parseURL(); } 65 public void removeUpdate(DocumentEvent e) { parseURL(); } 76 66 } 77 78 class osmLonLatListener implements DocumentListener { 79 public void changedUpdate(DocumentEvent e) { updateUrl(false); } 80 public void insertUpdate(DocumentEvent e) { updateUrl(false); } 81 public void removeUpdate(DocumentEvent e) { updateUrl(false); } 82 } 83 67 68 class osmLonLatListener implements DocumentListener { 69 public void changedUpdate(DocumentEvent e) { updateUrl(false); } 70 public void insertUpdate(DocumentEvent e) { updateUrl(false); } 71 public void removeUpdate(DocumentEvent e) { updateUrl(false); } 72 } 73 84 74 osmLonLatListener x=new osmLonLatListener(); 85 lat.getDocument().addDocumentListener(x); 86 lon.getDocument().addDocumentListener(x); 87 zm.getDocument().addDocumentListener(x); 88 url.getDocument().addDocumentListener(new osmURLListener()); 89 75 lat.getDocument().addDocumentListener(x); 76 lon.getDocument().addDocumentListener(x); 77 zm.getDocument().addDocumentListener(x); 78 url.getDocument().addDocumentListener(new osmURLListener()); 79 90 80 JPanel p = new JPanel(new GridBagLayout()); 91 81 panel.add(p, BorderLayout.NORTH); 92 82 93 83 p.add(new JLabel(tr("Latitude")), GBC.eol()); 94 84 p.add(lat, GBC.eol().fill(GBC.HORIZONTAL)); 95 85 96 86 p.add(new JLabel(tr("Longitude")), GBC.eol()); 97 87 p.add(lon, GBC.eol().fill(GBC.HORIZONTAL)); 98 88 99 89 p.add(new JLabel(tr("Zoom (in metres)")), GBC.eol()); 100 90 p.add(zm, GBC.eol().fill(GBC.HORIZONTAL)); 101 91 102 92 p.add(new JLabel(tr("URL")), GBC.eol()); 103 93 p.add(url, GBC.eol().fill(GBC.HORIZONTAL)); 104 94 105 95 Object[] buttons = { tr("Jump there"), tr("Cancel") }; 106 96 LatLon ll = null; … … 116 106 buttons, 117 107 buttons[0]); 118 108 119 109 if (option != JOptionPane.OK_OPTION) return; 120 110 try { … … 125 115 } 126 116 } 127 117 128 118 Main.map.mapView.zoomTo(Main.proj.latlon2eastNorth(ll), zoomFactor * zoomLvl); 129 119 } 130 120 131 121 private void parseURL() { 132 122 if(!url.hasFocus()) return; … … 135 125 lat.setText(Double.toString((b.min.lat() + b.max.lat())/2)); 136 126 lon.setText(Double.toString((b.min.lon() + b.max.lon())/2)); 137 127 138 128 int zoomLvl = 16; 139 String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&"); 140 for (String arg : args) { 141 int eq = arg.indexOf('='); 142 if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue; 143 129 String[] args = url.getText().substring(url.getText().indexOf('?')+1).split("&"); 130 for (String arg : args) { 131 int eq = arg.indexOf('='); 132 if (eq == -1 || !arg.substring(0, eq).equalsIgnoreCase("zoom")) continue; 133 144 134 zoomLvl = Integer.parseInt(arg.substring(eq + 1)); 145 135 break; 146 136 } 147 137 148 138 // 10000000 = 10 000 * 1000 = World * (km -> m) 149 139 zm.setText(Double.toString(Math.round(10000000 * Math.pow(2, (-1) * zoomLvl)))); 150 140 } 151 141 } 152 142 153 143 private void updateUrl(boolean force) { 154 144 if(!lat.hasFocus() && !lon.hasFocus() && !zm.hasFocus() && !force) return; … … 170 160 showJumpToDialog(); 171 161 } 172 162 173 163 /** 174 * Converts a given scale into OSM-Style zoom factors 164 * Converts a given scale into OSM-Style zoom factors 175 165 * @param double scale 176 */ 166 */ 177 167 public int getZoom(double scale) { 178 168 double sizex = scale * Main.map.mapView.getWidth(); 179 169 double sizey = scale * Main.map.mapView.getHeight(); 180 170 for (int zoom = 0; zoom <= 32; zoom++, sizex *= 2, sizey *= 2) 181 if (sizex > Main.map.mapView.world.east() || sizey > Main.map.mapView.world.north())171 if (sizex > NavigatableComponent.world.east() || sizey > NavigatableComponent.world.north()) 182 172 return zoom; 183 173 return 32; 184 174 } 185 175 186 176 public void mousePressed(MouseEvent e) {} 187 177
Note:
See TracChangeset
for help on using the changeset viewer.