Changeset 1307 in josm


Ignore:
Timestamp:
2009-01-20T09:38:04+01:00 (16 years ago)
Author:
stoecker
Message:

close #1983. Patch by xeen

Location:
trunk/src/org/openstreetmap/josm
Files:
1 added
3 edited

Legend:

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

    r1286 r1307  
    5050import org.openstreetmap.josm.gui.PleaseWaitDialog;
    5151import org.openstreetmap.josm.gui.SplashScreen;
    52 import org.openstreetmap.josm.gui.download.BoundingBoxSelection;
    5352import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
    5453import org.openstreetmap.josm.gui.layer.Layer;
     
    6160import org.openstreetmap.josm.plugins.PluginProxy;
    6261import org.openstreetmap.josm.tools.ImageProvider;
     62import org.openstreetmap.josm.tools.OsmUrlToBounds;
    6363import org.openstreetmap.josm.tools.PlatformHook;
    6464import org.openstreetmap.josm.tools.PlatformHookUnixoid;
     
    494494    private static void downloadFromParamString(final boolean rawGps, String s) {
    495495        if (s.startsWith("http:")) {
    496             final Bounds b = BoundingBoxSelection.osmurl2bounds(s);
     496            final Bounds b = OsmUrlToBounds.parse(s);
    497497            if (b == null)
    498498                JOptionPane.showMessageDialog(Main.parent, tr("Ignoring malformed URL: \"{0}\"", s));
  • trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java

    r1285 r1307  
    2424import org.openstreetmap.josm.data.coor.LatLon;
    2525import org.openstreetmap.josm.tools.GBC;
     26import org.openstreetmap.josm.tools.OsmUrlToBounds;
     27
    2628/**
    2729 * Bounding box selector.
     
    4143    final JTextArea osmUrl = new JTextArea();
    4244    final JTextArea showUrl = new JTextArea();
    43     String noteUrl = tr("You can paste an URL here to download the area.");
    4445
    4546    public void addGui(final DownloadDialog gui) {
    4647
    4748        JPanel dlg = new JPanel(new GridBagLayout());
    48         osmUrl.setText(noteUrl);
    4949
    5050        final FocusListener dialogUpdater = new FocusAdapter() {
     
    8080            public void removeUpdate(DocumentEvent e) { dowork(); }
    8181            private void dowork() {
    82                 Bounds b = osmurl2bounds(osmUrl.getText());
     82                Bounds b = OsmUrlToBounds.parse(osmUrl.getText());
    8383                if (b != null) {
    8484                    gui.minlon = b.min.lon();
     
    119119        dlg.add(latlon[3], GBC.eol());
    120120
    121         dlg.add(new JLabel(tr("URL from www.openstreetmap.org")), GBC.eol().insets(10,20,5,0));
     121        dlg.add(new JLabel(tr("URL from www.openstreetmap.org (you can paste an URL here to download the area)")), GBC.eol().insets(10,20,5,0));
    122122        dlg.add(osmUrl, GBC.eop().insets(10,0,5,0).fill());
    123123        dlg.add(showUrl, GBC.eop().insets(10,0,5,5));
     
    173173        showUrl.setText("http://www.openstreetmap.org/?lat="+lat+"&lon="+lon+"&zoom="+zoom);
    174174    }
    175 
    176     public static Bounds osmurl2bounds(String url) {
    177         int i = url.indexOf('?');
    178         if (i == -1)
    179             return null;
    180         String[] args = url.substring(i+1).split("&");
    181         HashMap<String, String> map = new HashMap<String, String>();
    182         for (String arg : args) {
    183             int eq = arg.indexOf('=');
    184             if (eq != -1) {
    185                 map.put(arg.substring(0, eq), arg.substring(eq + 1));
    186             }
    187         }
    188 
    189         Bounds b = null;
    190         try {
    191             if (map.containsKey("bbox")) {
    192                 String bbox[] = map.get("bbox").split(",");
    193                 b = new Bounds(
    194                     new LatLon(Double.parseDouble(bbox[1]), Double.parseDouble(bbox[0])),
    195                     new LatLon(Double.parseDouble(bbox[3]), Double.parseDouble(bbox[2])));
    196 
    197             } else {
    198                 double size = 180.0 / Math.pow(2, Integer.parseInt(map.get("zoom")));
    199                 b = new Bounds(
    200                     new LatLon(parseDouble(map, "lat") - size/2, parseDouble(map, "lon") - size),
    201                     new LatLon(parseDouble(map, "lat") + size/2, parseDouble(map, "lon") + size));
    202             }
    203         } catch (NumberFormatException x) {
    204         } catch (NullPointerException x) {
    205         }
    206         return b;
    207     }
    208 
    209     private static double parseDouble(HashMap<String, String> map, String key) {
    210         if (map.containsKey(key))
    211             return Double.parseDouble(map.get(key));
    212         return Double.parseDouble(map.get("m"+key));
    213     }
    214175}
  • trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java

    r1245 r1307  
    55
    66import java.awt.Color;
     7import java.awt.datatransfer.DataFlavor;
     8import java.awt.datatransfer.Transferable;
     9import java.awt.event.ActionEvent;
     10import java.awt.event.InputEvent;
     11import java.awt.event.KeyEvent;
    712import java.awt.Font;
    813import java.awt.GridBagLayout;
     14import java.awt.Toolkit;
    915import java.util.ArrayList;
    1016import java.util.List;
    1117
     18import javax.swing.AbstractAction;
    1219import javax.swing.JCheckBox;
    1320import javax.swing.JLabel;
     
    1522import javax.swing.JPanel;
    1623import javax.swing.JTabbedPane;
     24import javax.swing.KeyStroke;
    1725
    1826import org.openstreetmap.josm.Main;
     
    2028import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
    2129import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
     30import org.openstreetmap.josm.data.Bounds;
    2231import org.openstreetmap.josm.gui.MapView;
    2332import org.openstreetmap.josm.plugins.PluginProxy;
    2433import org.openstreetmap.josm.tools.GBC;
     34import org.openstreetmap.josm.tools.OsmUrlToBounds;
    2535
    2636/**
     
    146156        sizeCheck.setFont(labelFont.deriveFont(Font.PLAIN, labelFont.getSize()));
    147157        add(sizeCheck, GBC.eop().insets(0,5,5,10));
    148     }
     158       
     159        getInputMap(WHEN_IN_FOCUSED_WINDOW).put(
     160        KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK), "checkClipboardContents");
     161       
     162        getActionMap().put("checkClipboardContents", new AbstractAction() {
     163            public void actionPerformed(ActionEvent e) {
     164                checkClipboardContents();
     165            }
     166        });
     167    }
     168   
     169    private void checkClipboardContents() {
     170        String result = "";
     171        Transferable contents = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
     172 
     173        if(contents == null || !contents.isDataFlavorSupported(DataFlavor.stringFlavor))
     174            return;
     175         
     176        try {
     177            result = (String)contents.getTransferData(DataFlavor.stringFlavor);
     178        }
     179        catch(Exception ex) {
     180            return;
     181        }
     182         
     183        Bounds b = OsmUrlToBounds.parse(result);
     184        if (b != null) {
     185            minlon = b.min.lon();
     186            minlat = b.min.lat();
     187            maxlon = b.max.lon();
     188            maxlat = b.max.lat();
     189            boundingBoxChanged(null);
     190        }
     191    }
    149192
    150193    private void updateSizeCheck() {
Note: See TracChangeset for help on using the changeset viewer.