Index: /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 15362)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 15363)
@@ -123,6 +123,8 @@
      * @param gpxDownload Set to true if GPX data should be downloaded
      * @param title the title string for the confirmation dialog
-     */
-    protected static void confirmAndDownloadAreas(Area a, double maxArea, boolean osmDownload, boolean gpxDownload, String title) {
+     * @param newLayer Set to true if all areas should be put into a single new layer
+     */
+    protected static void confirmAndDownloadAreas(Area a, double maxArea, boolean osmDownload, boolean gpxDownload, String title,
+            boolean newLayer) {
         List<Rectangle2D> toDownload = new ArrayList<>();
         addToDownload(a, a.getBounds(), toDownload, maxArea);
@@ -140,5 +142,5 @@
         final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Download data"));
         final Future<?> future = new DownloadTaskList(Config.getPref().getBoolean("download.along.zoom-after-download"))
-                .download(false, toDownload, osmDownload, gpxDownload, monitor);
+                .download(newLayer, toDownload, osmDownload, gpxDownload, monitor);
         waitFuture(future, monitor);
     }
@@ -179,7 +181,8 @@
      * @param panel the panel that was displayed to the user and now contains his selections
      * @param confirmTitle the title to display in the confirmation panel
+     * @param newLayer Set to true if all areas should be put into a single new layer
      * @return the task or null if canceled by user
      */
-    protected PleaseWaitRunnable createCalcTask(Path2D alongPath, DownloadAlongPanel panel, String confirmTitle) {
+    protected PleaseWaitRunnable createCalcTask(Path2D alongPath, DownloadAlongPanel panel, String confirmTitle, boolean newLayer) {
         /*
          * Find the average latitude for the data we're contemplating, so we can know how many
@@ -221,10 +224,12 @@
 
             private final Path2D downloadPath = new Path2D.Double();
+            private final boolean newLayer;
             private boolean cancel;
             private int ticks;
             private final Rectangle2D r = new Rectangle2D.Double();
 
-            CalculateDownloadArea() {
+            CalculateDownloadArea(boolean newLayer) {
                 super(tr("Calculating Download Area"), displayProgress ? null : NullProgressMonitor.INSTANCE, false);
+                this.newLayer = newLayer;
             }
 
@@ -245,5 +250,5 @@
                 }
                 confirmAndDownloadAreas(new Area(downloadPath), maxArea, panel.isDownloadOsmData(), panel.isDownloadGpxData(),
-                        confirmTitle);
+                        confirmTitle, newLayer);
             }
 
@@ -291,5 +296,5 @@
         }
 
-        return new CalculateDownloadArea();
+        return new CalculateDownloadArea(newLayer);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadAlongWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadAlongWayAction.java	(revision 15362)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadAlongWayAction.java	(revision 15363)
@@ -54,5 +54,6 @@
                 PREF_DOWNLOAD_ALONG_WAY_DISTANCE, PREF_DOWNLOAD_ALONG_WAY_AREA, null);
 
-        if (0 != panel.showInDownloadDialog(tr("Download from OSM along selected ways"), HelpUtil.ht("/Tools/DownloadAlong"))) {
+        int ret = panel.showInDownloadDialog(tr("Download from OSM along selected ways"), HelpUtil.ht("/Tools/DownloadAlong"));
+        if (0 != ret && 1 != ret) {
             return null;
         }
@@ -71,6 +72,5 @@
             }
         }
-        return createCalcTask(alongPath, panel, tr("Download from OSM along selected ways"));
-
+        return createCalcTask(alongPath, panel, tr("Download from OSM along selected ways"), 1 == ret);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 15362)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 15363)
@@ -172,4 +172,10 @@
                 ),
                 new ButtonSpec(
+                        tr("Download as new layer"),
+                        new ImageProvider("download_new_layer"),
+                        tr("Click to download into a new data layer"),
+                        null // no specific help text
+                ),
+                new ButtonSpec(
                         tr("Cancel"),
                         new ImageProvider("cancel"),
@@ -183,5 +189,5 @@
         int ret = HelpAwareOptionPane.showOptionDialog(MainApplication.getMainFrame(), this, title,
                     JOptionPane.QUESTION_MESSAGE, null, options, options[0], helpTopic);
-        if (0 == ret) {
+        if (0 == ret || 1 == ret) {
             rememberSettings();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 15362)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 15363)
@@ -50,5 +50,6 @@
                 PREF_DOWNLOAD_ALONG_TRACK_DISTANCE, PREF_DOWNLOAD_ALONG_TRACK_AREA, PREF_DOWNLOAD_ALONG_TRACK_NEAR);
 
-        if (0 != panel.showInDownloadDialog(tr("Download from OSM along this track"), HelpUtil.ht("/Action/DownloadAlongTrack"))) {
+        int ret = panel.showInDownloadDialog(tr("Download from OSM along this track"), HelpUtil.ht("/Action/DownloadAlongTrack"));
+        if (0 != ret && 1 != ret) {
             return null;
         }
@@ -79,5 +80,5 @@
             }
         }
-        return createCalcTask(gpxPath, panel, tr("Download from OSM along this track"));
+        return createCalcTask(gpxPath, panel, tr("Download from OSM along this track"), 1 == ret);
     }
 }
