Index: trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 13260)
+++ trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 13261)
@@ -43,4 +43,5 @@
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.gui.util.WindowGeometry;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -59,5 +60,9 @@
      * true if the URL needs to be opened in a new layer, false otherwise
      */
-    private static final BooleanProperty USE_NEW_LAYER = new BooleanProperty("download.newlayer", false);
+    private static final BooleanProperty USE_NEW_LAYER = new BooleanProperty("download.location.newlayer", false);
+    /**
+     * true to zoom to entire newly downloaded data, false otherwise
+     */
+    private static final BooleanProperty DOWNLOAD_ZOOMTODATA = new BooleanProperty("download.location.zoomtodata", true);
     /**
      * the list of download tasks
@@ -139,4 +144,12 @@
         all.add(layer, GBC.eop().fill(GBC.BOTH));
 
+        // zoom to downloaded data
+        JCheckBox zoom = new JCheckBox(tr("Zoom to downloaded data"));
+        zoom.setToolTipText(tr("Select to zoom to entire newly downloaded data."));
+        zoom.setSelected(DOWNLOAD_ZOOMTODATA.get());
+        all.add(zoom, GBC.eop().fill(GBC.BOTH));
+
+        ExpertToggleAction.addVisibilitySwitcher(zoom);
+
         ExtendedDialog dialog = new ExtendedDialog(Main.parent,
                 tr("Download Location"),
@@ -148,6 +161,11 @@
                 tr("Close dialog and cancel downloading"))
             .configureContextsensitiveHelp("/Action/OpenLocation", true /* show help button */);
+        dialog.setupDialog();
+        dialog.pack();
+        dialog.setRememberWindowGeometry(getClass().getName() + ".geometry",
+                    WindowGeometry.centerInWindow(Main.parent, dialog.getPreferredSize()));
         if (dialog.showDialog().getValue() == 1) {
             USE_NEW_LAYER.put(layer.isSelected());
+            DOWNLOAD_ZOOMTODATA.put(zoom.isSelected());
             remindUploadAddressHistory(uploadAddresses);
             openUrl(Utils.strip(uploadAddresses.getText()));
@@ -207,5 +225,5 @@
      */
     public List<Future<?>> openUrl(boolean newLayer, String url) {
-        return realOpenUrl(newLayer, url);
+        return openUrl(newLayer, DOWNLOAD_ZOOMTODATA.get(), url);
     }
 
@@ -217,8 +235,16 @@
      */
     public List<Future<?>> openUrl(String url) {
-        return realOpenUrl(USE_NEW_LAYER.get(), url);
-    }
-
-    private List<Future<?>> realOpenUrl(boolean newLayer, String url) {
+        return openUrl(USE_NEW_LAYER.get(), DOWNLOAD_ZOOMTODATA.get(), url);
+    }
+
+    /**
+     * Open the given URL.
+     * @param newLayer true if the URL needs to be opened in a new layer, false otherwise
+     * @param zoomToData true to zoom to entire newly downloaded data, false otherwise
+     * @param url The URL to open
+     * @return the list of tasks that have been started successfully (can be empty).
+     * @since 13261
+     */
+    public List<Future<?>> openUrl(boolean newLayer, boolean zoomToData, String url) {
         Collection<DownloadTask> tasks = findDownloadTasks(url, false);
 
@@ -235,4 +261,5 @@
         for (final DownloadTask task : tasks) {
             try {
+                task.setZoomAfterDownload(zoomToData);
                 result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(newLayer, url, monitor))));
             } catch (IllegalArgumentException e) {
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java	(revision 13260)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java	(revision 13261)
@@ -79,9 +79,5 @@
     }
 
-    /**
-     * Sets whether the map view will zoom to download area after download
-     * @param zoomAfterDownload if true, the map view will zoom to download area after download
-     * @since 11658
-     */
+    @Override
     public final void setZoomAfterDownload(boolean zoomAfterDownload) {
         this.zoomAfterDownload = zoomAfterDownload;
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(revision 13260)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java	(revision 13261)
@@ -128,3 +128,10 @@
      */
     String getConfirmationMessage(URL url);
+
+    /**
+     * Sets whether the map view will zoom to download area after download
+     * @param zoomAfterDownload if true, the map view will zoom to download area after download
+     * @since 13261
+     */
+    void setZoomAfterDownload(boolean zoomAfterDownload);
 }
