Index: trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 8220)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 8221)
@@ -49,5 +49,5 @@
     public static void processItems(boolean newLayer, final List<PrimitiveId> ids, boolean downloadReferrers, boolean full) {
         final DownloadPrimitivesWithReferrersTask task =
-                new DownloadPrimitivesWithReferrersTask(newLayer, ids, downloadReferrers, full, null);
+                new DownloadPrimitivesWithReferrersTask(newLayer, ids, downloadReferrers, full, null, null);
         Main.worker.submit(task);
         Main.worker.submit(new Runnable() {
Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 8220)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 8221)
@@ -64,8 +64,9 @@
      *     i.e., parent relations, and for nodes, additionally, parent ways
      * @param full if the members of a relation should be downloaded as well
+     * @param newLayerName the name to use for the new layer, can be {@code null}.
      * @param monitor ProgressMonitor to use, or null to create a new one
      */
     public DownloadPrimitivesWithReferrersTask(boolean newLayer, List<PrimitiveId> ids, boolean downloadReferrers,
-            boolean full, ProgressMonitor monitor) {
+            boolean full, String newLayerName, ProgressMonitor monitor) {
         super(tr("Download objects"), monitor, false);
         this.ids = ids;
@@ -74,5 +75,5 @@
         this.newLayer = newLayer;
         // All downloaded primitives are put in a tmpLayer
-        tmpLayer = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
+        tmpLayer = new OsmDataLayer(new DataSet(), newLayerName != null ? newLayerName : OsmDataLayer.createNewName(), null);
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 8220)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 8221)
@@ -73,5 +73,5 @@
     @Override
     public String[] getOptionalParams() {
-        return new String[] {"new_layer", "addtags", "select", "zoom_mode", "changeset_comment", "changeset_source", "search"};
+        return new String[] {"new_layer", "layer_name", "addtags", "select", "zoom_mode", "changeset_comment", "changeset_source", "search"};
     }
 
@@ -102,5 +102,9 @@
     @Override
     protected void handleRequest() throws RequestHandlerErrorException {
-        DownloadTask osmTask = new DownloadOsmTask();
+        DownloadTask osmTask = new DownloadOsmTask() {
+            {
+                newLayerName = args.get("layer_name");
+            }
+        };
         try {
             boolean newLayer = isLoadInNewLayer();
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 8220)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 8221)
@@ -40,5 +40,5 @@
     @Override
     public String[] getOptionalParams() {
-        return new String[] {"new_layer", "addtags", "relation_members", "referrers"};
+        return new String[] {"new_layer", "layer_name", "addtags", "relation_members", "referrers"};
     }
 
@@ -64,7 +64,7 @@
             final boolean newLayer = isLoadInNewLayer();
             final boolean relationMembers = Boolean.parseBoolean(args.get("relation_members"));
-            final boolean referrers = args.containsKey("referrers") ? Boolean.parseBoolean(args.get("referrers")) : true;
+            final boolean referrers = Boolean.parseBoolean(args.get("referrers"));
             final DownloadPrimitivesWithReferrersTask task = new DownloadPrimitivesWithReferrersTask(
-                    newLayer, ps, referrers, relationMembers, null);
+                    newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
             Main.worker.submit(task);
             Main.worker.submit(new Runnable() {
