Index: /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 4995)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 4996)
@@ -8,5 +8,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -19,4 +21,6 @@
 import java.util.List;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.swing.JFileChooser;
@@ -43,4 +47,6 @@
  */
 public class OpenFileAction extends DiskAccessAction {
+
+    public static final ExtensionFileFilter urlFileFilter = new ExtensionFileFilter("url", "url", tr("URL Files") + " (*.url)");
 
     /**
@@ -237,4 +243,5 @@
                 MultiMap<FileImporter, File> importerMap = new MultiMap<FileImporter, File>();
                 List<File> filesWithUnknownImporter = new LinkedList<File>();
+                List<File> urlFiles = new LinkedList<File>();
                 FILES: for (File f : files) {
                     for (FileImporter importer : ExtensionFileFilter.importers) {
@@ -244,5 +251,9 @@
                         }
                     }
-                    filesWithUnknownImporter.add(f);
+                    if (urlFileFilter.accept(f)) {
+                        urlFiles.add(f);
+                    } else {
+                        filesWithUnknownImporter.add(f);
+                    }
                 }
                 if (!filesWithUnknownImporter.isEmpty()) {
@@ -271,4 +282,21 @@
                             failedAll.add(f.getCanonicalPath());
                         }
+                    }
+                }
+                
+                for (File urlFile: urlFiles) {
+                    try {
+                        BufferedReader reader = new BufferedReader(new FileReader(urlFile));
+                        String line;
+                        while ((line = reader.readLine()) != null) {
+                            Matcher m = Pattern.compile(".*(http://.*)").matcher(line);
+                            if (m.matches()) {
+                                String url = m.group(1);
+                                Main.main.menu.openLocation.openUrl(false, url);
+                            }
+                        }
+                        reader.close();
+                    } catch (Exception e) {
+                        System.err.println(e.getMessage());
                     }
                 }
Index: /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 4995)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 4996)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmChangeTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
+import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmUrlTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
@@ -53,4 +54,5 @@
         addDownloadTaskClass(DownloadGpsTask.class);
         addDownloadTaskClass(DownloadOsmChangeTask.class);
+        addDownloadTaskClass(DownloadOsmUrlTask.class);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java	(revision 4996)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmUrlTask.java	(revision 4996)
@@ -0,0 +1,22 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import java.util.concurrent.Future;
+
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.OsmUrlToBounds;
+
+public class DownloadOsmUrlTask extends DownloadOsmTask {
+
+    @Override
+    public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
+        return download(newLayer, OsmUrlToBounds.parse(url), null);
+    }
+
+    @Override
+    public boolean acceptsUrl(String url) {
+        return url != null && (
+                url.matches("http://www\\.openstreetmap\\.org/\\?lat=.*&lon=.*&zoom=.*")
+                );
+    }
+}
