Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 8926)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 8927)
@@ -47,4 +47,7 @@
 
     protected String newLayerName;
+
+    /** This allows subclasses to ignore this warning */
+    protected boolean warnAboutEmptyArea = true;
 
     @Override
@@ -123,4 +126,6 @@
     /**
      * This allows subclasses to perform operations on the URL before {@link #loadUrl} is performed.
+     * @param url the original URL
+     * @return the modified URL
      */
     protected String modifyUrlBeforeLoad(String url) {
@@ -130,16 +135,16 @@
     /**
      * Loads a given URL from the OSM Server
-     * @param new_layer True if the data should be saved to a new layer
+     * @param newLayer True if the data should be saved to a new layer
      * @param url The URL as String
      */
     @Override
-    public Future<?> loadUrl(boolean new_layer, String url, ProgressMonitor progressMonitor) {
-        url = modifyUrlBeforeLoad(url);
-        downloadTask = new DownloadTask(new_layer,
-                new OsmServerLocationReader(url),
+    public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
+        String newUrl = modifyUrlBeforeLoad(url);
+        downloadTask = new DownloadTask(newLayer,
+                new OsmServerLocationReader(newUrl),
                 progressMonitor);
         currentBounds = null;
         // Extract .osm filename from URL to set the new layer name
-        extractOsmFilename("https?://.*/(.*\\.osm)", url);
+        extractOsmFilename("https?://.*/(.*\\.osm)", newUrl);
         return Main.worker.submit(downloadTask);
     }
@@ -169,4 +174,5 @@
 
         protected final boolean newLayer;
+        protected final boolean zoomAfterDownload;
         protected DataSet dataSet;
 
@@ -179,8 +185,10 @@
          * exception will be thrown directly in EDT. When this runnable is executed using executor framework
          * then use false unless you read result of task (because exception will get lost if you don't)
+         * @param zoomAfterDownload If true, the map view will zoom to download area after download
          */
-        public AbstractInternalTask(boolean newLayer, String title, boolean ignoreException) {
+        public AbstractInternalTask(boolean newLayer, String title, boolean ignoreException, boolean zoomAfterDownload) {
             super(title, ignoreException);
             this.newLayer = newLayer;
+            this.zoomAfterDownload = zoomAfterDownload;
         }
 
@@ -194,8 +202,11 @@
          * exception will be thrown directly in EDT. When this runnable is executed using executor framework
          * then use false unless you read result of task (because exception will get lost if you don't)
+         * @param zoomAfterDownload If true, the map view will zoom to download area after download
          */
-        public AbstractInternalTask(boolean newLayer, String title, ProgressMonitor progressMonitor, boolean ignoreException) {
+        public AbstractInternalTask(boolean newLayer, String title, ProgressMonitor progressMonitor, boolean ignoreException,
+                boolean zoomAfterDownload) {
             super(title, progressMonitor, ignoreException);
             this.newLayer = newLayer;
+            this.zoomAfterDownload = zoomAfterDownload;
         }
 
@@ -206,6 +217,6 @@
 
         protected int getNumDataLayers() {
+            if (!Main.isDisplayingMapView()) return 0;
             int count = 0;
-            if (!Main.isDisplayingMapView()) return 0;
             Collection<Layer> layers = Main.map.mapView.getAllLayers();
             for (Layer layer : layers) {
@@ -276,5 +287,7 @@
                 }
                 layer.mergeFrom(dataSet);
-                computeBboxAndCenterScale(bounds);
+                if (zoomAfterDownload) {
+                    computeBboxAndCenterScale(bounds);
+                }
                 layer.onPostDownloadFromServer();
             }
@@ -285,6 +298,12 @@
         protected final OsmServerReader reader;
 
+        /**
+         * Constructs a new {@code DownloadTask}.
+         * @param newLayer if {@code true}, force download to a new layer
+         * @param reader OSM data reader
+         * @param progressMonitor progress monitor
+         */
         public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
-            super(newLayer, tr("Downloading data"), progressMonitor, false);
+            super(newLayer, tr("Downloading data"), progressMonitor, false, true);
             this.reader = reader;
         }
@@ -324,5 +343,7 @@
                 return; // user canceled download or error occurred
             if (dataSet.allPrimitives().isEmpty()) {
-                rememberErrorMessage(tr("No data found in this area."));
+                if (warnAboutEmptyArea) {
+                    rememberErrorMessage(tr("No data found in this area."));
+                }
                 // need to synthesize a download bounds lest the visual indication of downloaded area doesn't work
                 dataSet.dataSources.add(new DataSource(currentBounds != null ? currentBounds :
Index: /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 8926)
+++ /trunk/src/org/openstreetmap/josm/data/ProjectionBounds.java	(revision 8927)
@@ -89,4 +89,8 @@
     }
 
+    /**
+     * Determines if the bounds area is not null
+     * @return {@code true} if the area is not null
+     */
     public boolean hasExtend() {
         return !Utils.equalsEpsilon(minEast, maxEast) || !Utils.equalsEpsilon(minNorth, maxNorth);
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 8926)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 8927)
@@ -48,4 +48,8 @@
     }
 
+    /**
+     * Visiting call for bounds.
+     * @param b bounds
+     */
     public void visit(Bounds b) {
         if (b != null) {
@@ -55,4 +59,8 @@
     }
 
+    /**
+     * Visiting call for projection bounds.
+     * @param b projection bounds
+     */
     public void visit(ProjectionBounds b) {
         if (b != null) {
@@ -62,4 +70,8 @@
     }
 
+    /**
+     * Visiting call for lat/lon.
+     * @param latlon lat/lon
+     */
     public void visit(LatLon latlon) {
         if (latlon != null) {
@@ -72,4 +84,8 @@
     }
 
+    /**
+     * Visiting call for east/north.
+     * @param eastNorth east/north
+     */
     public void visit(EastNorth eastNorth) {
         if (eastNorth != null) {
@@ -82,4 +98,9 @@
     }
 
+    /**
+     * Determines if the visitor has a non null bounds area.
+     * @return {@code true} if the visitor has a non null bounds area
+     * @see ProjectionBounds#hasExtend
+     */
     public boolean hasExtend() {
         return bounds != null && bounds.hasExtend();
@@ -174,7 +195,7 @@
             return;
         // convert size from meters to east/north units
-        double en_size = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
-        visit(bounds.getMin().add(-en_size/2, -en_size/2));
-        visit(bounds.getMax().add(+en_size/2, +en_size/2));
+        double enSize = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
+        visit(bounds.getMin().add(-enSize/2, -enSize/2));
+        visit(bounds.getMax().add(+enSize/2, +enSize/2));
     }
 
@@ -184,4 +205,8 @@
     }
 
+    /**
+     * Compute the bounding box of a collection of primitives.
+     * @param primitives the collection of primitives
+     */
     public void computeBoundingBox(Collection<? extends OsmPrimitive> primitives) {
         if (primitives == null) return;
Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java	(revision 8926)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java	(revision 8927)
@@ -60,7 +60,7 @@
     @Override
     public String[] getUsageExamples() {
-        final String data = Utils.encodeUrl("<osm version='0.6'><node id='-1' lat='1' lon='2' /></osm>");
         return new String[]{
-                "/load_data?layer_name=extra_layer&new_layer=true&data=" + data};
+                "/load_data?layer_name=extra_layer&new_layer=true&data=" +
+                    Utils.encodeUrl("<osm version='0.6'><node id='-1' lat='1' lon='2' /></osm>")};
     }
 
@@ -101,6 +101,12 @@
         protected final String layerName;
 
+        /**
+         * Constructs a new {@code LoadDataTask}.
+         * @param newLayer if {@code true}, force download to a new layer
+         * @param dataSet data set
+         * @param layerName layer name
+         */
         public LoadDataTask(boolean newLayer, DataSet dataSet, String layerName) {
-            super(newLayer, tr("Loading data"), false);
+            super(newLayer, tr("Loading data"), false, true);
             this.dataSet = dataSet;
             this.layerName = layerName;
