Index: applications/editors/josm/plugins/download_along/build.xml
===================================================================
--- applications/editors/josm/plugins/download_along/build.xml	(revision 29745)
+++ applications/editors/josm/plugins/download_along/build.xml	(revision 29746)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Changed the constructor signature of the plugin main class"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="6053"/>
+    <property name="plugin.main.version" value="6054"/>
 
 	<!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlong.java
===================================================================
--- applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlong.java	(revision 29745)
+++ applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlong.java	(revision 29746)
@@ -7,13 +7,8 @@
 
 public class DownloadAlong extends Plugin {
-	public static final String PREF_DOWNLOAD_ALONG_TRACK_DISTANCE = "downloadAlong.downloadAlongTrack.distance";
-	public static final String PREF_DOWNLOAD_ALONG_TRACK_AREA = "downloadAlong.downloadAlongTrack.area";
-
-	public static final String PREF_DOWNLOAD_ALONG_OSM = "downloadAlong.download.osm";
-	public static final String PREF_DOWNLOAD_ALONG_GPS = "downloadAlong.download.gps";
 
 	public DownloadAlong(PluginInformation info) {
 		super(info);
-		MainMenu.add(Main.main.menu.toolsMenu, new DownloadAlongAction());
+		MainMenu.add(Main.main.menu.toolsMenu, new DownloadAlongWayAction());
 	}
 }
Index: applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlongAction.java
===================================================================
--- applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlongAction.java	(revision 29745)
+++ 	(revision )
@@ -1,259 +1,0 @@
-package org.openstreetmap.josm.plugin.download_along;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.awt.geom.Area;
-import java.awt.geom.Rectangle2D;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Future;
-
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.actions.downloadtasks.DownloadTaskList;
-import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.HelpAwareOptionPane;
-import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
-import org.openstreetmap.josm.gui.help.HelpUtil;
-import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
-import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
-
-class DownloadAlongAction extends JosmAction {
-
-	public DownloadAlongAction() {
-		super(tr("Download along..."), "download_along", tr("Download OSM data along the selected ways."), 
-				Shortcut.registerShortcut("tools:download_along", tr("Tool: {0}", tr("Download Along")), 
-						KeyEvent.VK_D, Shortcut.ALT_SHIFT), true);
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		Collection<OsmPrimitive> selection = Main.main.getCurrentDataSet().getSelected();
-
-		int ways = 0;
-		for (OsmPrimitive prim : selection) {
-			if (prim instanceof Way)
-				ways++;
-		}
-
-		if (ways < 1) {
-			JOptionPane.showMessageDialog(Main.parent, tr("Please select 1 or more ways to download along"));
-			return;
-		}
-
-		final DownloadPanel panel = new DownloadPanel();
-		
-        final ButtonSpec[] options = new ButtonSpec[] {
-                new ButtonSpec(
-                        tr("Download"),
-                        ImageProvider.get("download"),
-                        tr("Click to download"),
-                        null // no specific help text
-                ),
-                new ButtonSpec(
-                        tr("Cancel"),
-                        ImageProvider.get("cancel"),
-                        tr("Click to cancel"),
-                        null // no specific help text
-                )
-        };
-        
-        panel.addChangeListener(new ChangeListener() {
-			@Override public void stateChanged(ChangeEvent e) {
-				options[0].setEnabled(panel.isDownloadOsmData() || panel.isDownloadGpxData());
-			}
-		});
-
-		if (0 != HelpAwareOptionPane.showOptionDialog(Main.parent, panel, tr("Download from OSM along this track"),
-				JOptionPane.QUESTION_MESSAGE, null, options, options[0], HelpUtil.ht("/Tools/DownloadAlong"))) {
-			return;
-		}
-		
-		panel.rememberSettings();
-
-		/*
-		 * Find the average latitude for the data we're contemplating, so we
-		 * can know how many metres per degree of longitude we have.
-		 */
-		double latsum = 0;
-		int latcnt = 0;
-
-		for (OsmPrimitive prim : selection) {
-			if (prim instanceof Way) {
-				Way way = (Way) prim;
-				for (Node n : way.getNodes()) {
-					latsum += n.getCoor().lat();
-					latcnt++;
-				}
-			}
-		}
-
-		double avglat = latsum / latcnt;
-		double scale = Math.cos(Math.toRadians(avglat));
-
-		/*
-		 * Compute buffer zone extents and maximum bounding box size. Note
-		 * that the maximum we ever offer is a bbox area of 0.002, while the
-		 * API theoretically supports 0.25, but as soon as you touch any
-		 * built-up area, that kind of bounding box will download forever
-		 * and then stop because it has more than 50k nodes.
-		 */
-		double buffer_dist = panel.getDistance();
-		double buffer_y = buffer_dist / 100000.0;
-		double buffer_x = buffer_y / scale;
-		double max_area = panel.getArea() / 10000.0 / scale;
-		Area a = new Area();
-		Rectangle2D r = new Rectangle2D.Double();
-
-		/*
-		 * Collect the combined area of all gpx points plus buffer zones
-		 * around them. We ignore points that lie closer to the previous
-		 * point than the given buffer size because otherwise this operation
-		 * takes ages.
-		 */
-		LatLon previous = null;
-		for (OsmPrimitive prim : selection) {
-			if (prim instanceof Way) {
-				Way way = (Way) prim;
-				for (Node p : way.getNodes()) {
-					LatLon c = p.getCoor();
-					ArrayList<LatLon> intermediateNodes = new ArrayList<LatLon>();
-					if (previous != null && c.greatCircleDistance(previous) > buffer_dist) {
-						Double d = c.greatCircleDistance(previous) / buffer_dist;
-						int nbNodes = d.intValue();
-						System.out.println(tr("{0} intermediate nodes to download.", nbNodes));
-						System.out.println(tr("between {0} {1} and {2} {3}", c.lat(), c.lon(), previous.lat(),
-								previous.lon()));
-						for (int i = 1; i < nbNodes; i++) {
-							intermediateNodes.add(new LatLon(previous.lat()
-									+ (i * (c.lat() - previous.lat()) / (nbNodes + 1)), previous.lon()
-									+ (i * (c.lon() - previous.lon()) / (nbNodes + 1))));
-							System.out.println(tr("  adding {0} {1}", previous.lat()
-									+ (i * (c.lat() - previous.lat()) / (nbNodes + 1)), previous.lon()
-									+ (i * (c.lon() - previous.lon()) / (nbNodes + 1))));
-						}
-					}
-					intermediateNodes.add(c);
-					for (LatLon d : intermediateNodes) {
-						if (previous == null || d.greatCircleDistance(previous) > buffer_dist) {
-							// we add a buffer around the point.
-							r.setRect(d.lon() - buffer_x, d.lat() - buffer_y, 2 * buffer_x, 2 * buffer_y);
-							a.add(new Area(r));
-							previous = d;
-						}
-					}
-					previous = c;
-				}
-			}
-		}
-
-		/*
-		 * Area "a" now contains the hull that we would like to download
-		 * data for. however we can only download rectangles, so the
-		 * following is an attempt at finding a number of rectangles to
-		 * download.
-		 * 
-		 * The idea is simply: Start out with the full bounding box. If it
-		 * is too large, then split it in half and repeat recursively for
-		 * each half until you arrive at something small enough to download.
-		 * The algorithm is improved by always using the intersection
-		 * between the rectangle and the actual desired area. For example,
-		 * if you have a track that goes like this: +----+ | /| | / | | / |
-		 * |/ | +----+ then we would first look at downloading the whole
-		 * rectangle (assume it's too big), after that we split it in half
-		 * (upper and lower half), but we donot request the full upper and
-		 * lower rectangle, only the part of the upper/lower rectangle that
-		 * actually has something in it.
-		 */
-
-		List<Rectangle2D> toDownload = new ArrayList<Rectangle2D>();
-
-		addToDownload(a, a.getBounds(), toDownload, max_area);
-
-		JPanel msg = new JPanel(new GridBagLayout());
-
-		msg.add(new JLabel(tr("<html>This action will require {0} individual<br>"
-				+ "download requests. Do you wish<br>to continue?</html>", toDownload.size())), GBC.eol());
-
-		if (toDownload.size() > 1) {
-			if (JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(Main.parent, msg, tr("Download from OSM along this track"),
-					JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
-				return;
-			}
-		}
-		final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Download data"));
-		final Future<?> future = new DownloadTaskList().download(false, toDownload, panel.isDownloadOsmData(), panel.isDownloadGpxData(), monitor);
-		Main.worker.submit(new Runnable() {
-			public void run() {
-				try {
-					future.get();
-				} catch (Exception e) {
-					e.printStackTrace();
-					return;
-				}
-				monitor.close();
-			}
-		});
-	}
-
-	private static void addToDownload(Area a, Rectangle2D r, Collection<Rectangle2D> results, double max_area) {
-		Area tmp = new Area(r);
-		// intersect with sought-after area
-		tmp.intersect(a);
-		if (tmp.isEmpty())
-			return;
-		Rectangle2D bounds = tmp.getBounds2D();
-		if (bounds.getWidth() * bounds.getHeight() > max_area) {
-			// the rectangle gets too large; split it and make recursive
-			// call.
-			Rectangle2D r1;
-			Rectangle2D r2;
-			if (bounds.getWidth() > bounds.getHeight()) {
-				// rectangles that are wider than high are split into a left
-				// and right
-				// half,
-				r1 = new Rectangle2D.Double(bounds.getX(), bounds.getY(), bounds.getWidth() / 2, bounds.getHeight());
-				r2 = new Rectangle2D.Double(bounds.getX() + bounds.getWidth() / 2, bounds.getY(),
-						bounds.getWidth() / 2, bounds.getHeight());
-			} else {
-				// others into a top and bottom half.
-				r1 = new Rectangle2D.Double(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight() / 2);
-				r2 = new Rectangle2D.Double(bounds.getX(), bounds.getY() + bounds.getHeight() / 2,
-						bounds.getWidth(), bounds.getHeight() / 2);
-			}
-			addToDownload(a, r1, results, max_area);
-			addToDownload(a, r2, results, max_area);
-		} else {
-			results.add(bounds);
-		}
-	}
-
-	@Override
-	protected void updateEnabledState() {
-        if (getCurrentDataSet() == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
-        }
-	}
-
-	@Override
-	protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
-        setEnabled(Utils.exists(selection, OsmPrimitive.wayPredicate));
-	}
-}
Index: applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlongWayAction.java
===================================================================
--- applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlongWayAction.java	(revision 29746)
+++ applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadAlongWayAction.java	(revision 29746)
@@ -0,0 +1,144 @@
+package org.openstreetmap.josm.plugin.download_along;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.DownloadAlongAction;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.layer.gpx.DownloadAlongPanel;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
+
+class DownloadAlongWayAction extends DownloadAlongAction {
+
+	private static final String PREF_DOWNLOAD_ALONG_WAY_DISTANCE = "downloadAlongWay.distance";
+	private static final String PREF_DOWNLOAD_ALONG_WAY_AREA = "downloadAlongWay.area";
+
+	private static final String PREF_DOWNLOAD_ALONG_WAY_OSM = "downloadAlongWay.download.osm";
+	private static final String PREF_DOWNLOAD_ALONG_WAY_GPS = "downloadAlongWay.download.gps";
+
+	public DownloadAlongWayAction() {
+		super(tr("Download along..."), "download_along", tr("Download OSM data along the selected ways."), 
+				Shortcut.registerShortcut("tools:download_along", tr("Tool: {0}", tr("Download Along")), 
+						KeyEvent.VK_D, Shortcut.ALT_SHIFT), true);
+	}
+
+	public void actionPerformed(ActionEvent e) {
+        Set<Way> selectedWays = OsmPrimitive.getFilteredSet(Main.main.getCurrentDataSet().getSelected(), Way.class);
+
+		if (selectedWays.isEmpty()) {
+			JOptionPane.showMessageDialog(Main.parent, tr("Please select 1 or more ways to download along"));
+			return;
+		}
+
+		final DownloadAlongPanel panel = new DownloadAlongPanel(
+				PREF_DOWNLOAD_ALONG_WAY_OSM, PREF_DOWNLOAD_ALONG_WAY_GPS,
+				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"))) {
+			return;
+		}
+
+		/*
+		 * Find the average latitude for the data we're contemplating, so we
+		 * can know how many metres per degree of longitude we have.
+		 */
+		double latsum = 0;
+		int latcnt = 0;
+
+		for (Way way : selectedWays) {
+			for (Node n : way.getNodes()) {
+				latsum += n.getCoor().lat();
+				latcnt++;
+			}
+		}
+
+		double avglat = latsum / latcnt;
+		double scale = Math.cos(Math.toRadians(avglat));
+
+		/*
+		 * Compute buffer zone extents and maximum bounding box size. Note
+		 * that the maximum we ever offer is a bbox area of 0.002, while the
+		 * API theoretically supports 0.25, but as soon as you touch any
+		 * built-up area, that kind of bounding box will download forever
+		 * and then stop because it has more than 50k nodes.
+		 */
+		double buffer_dist = panel.getDistance();
+		double buffer_y = buffer_dist / 100000.0;
+		double buffer_x = buffer_y / scale;
+		double max_area = panel.getArea() / 10000.0 / scale;
+		Area a = new Area();
+		Rectangle2D r = new Rectangle2D.Double();
+
+		/*
+		 * Collect the combined area of all gpx points plus buffer zones
+		 * around them. We ignore points that lie closer to the previous
+		 * point than the given buffer size because otherwise this operation
+		 * takes ages.
+		 */
+		LatLon previous = null;
+		for (Way way : selectedWays) {
+			for (Node p : way.getNodes()) {
+				LatLon c = p.getCoor();
+				ArrayList<LatLon> intermediateNodes = new ArrayList<LatLon>();
+				if (previous != null && c.greatCircleDistance(previous) > buffer_dist) {
+					Double d = c.greatCircleDistance(previous) / buffer_dist;
+					int nbNodes = d.intValue();
+					System.out.println(tr("{0} intermediate nodes to download.", nbNodes));
+					System.out.println(tr("between {0} {1} and {2} {3}", c.lat(), c.lon(), previous.lat(),
+							previous.lon()));
+					for (int i = 1; i < nbNodes; i++) {
+						intermediateNodes.add(new LatLon(previous.lat()
+								+ (i * (c.lat() - previous.lat()) / (nbNodes + 1)), previous.lon()
+								+ (i * (c.lon() - previous.lon()) / (nbNodes + 1))));
+						System.out.println(tr("  adding {0} {1}", previous.lat()
+								+ (i * (c.lat() - previous.lat()) / (nbNodes + 1)), previous.lon()
+								+ (i * (c.lon() - previous.lon()) / (nbNodes + 1))));
+					}
+				}
+				intermediateNodes.add(c);
+				for (LatLon d : intermediateNodes) {
+					if (previous == null || d.greatCircleDistance(previous) > buffer_dist) {
+						// we add a buffer around the point.
+						r.setRect(d.lon() - buffer_x, d.lat() - buffer_y, 2 * buffer_x, 2 * buffer_y);
+						a.add(new Area(r));
+						previous = d;
+					}
+				}
+				previous = c;
+			}
+		}
+		
+		confirmAndDownloadAreas(a, max_area, panel.isDownloadOsmData(), panel.isDownloadGpxData(), 
+				tr("Download from OSM along selected ways"), NullProgressMonitor.INSTANCE);
+	}
+
+	@Override
+	protected void updateEnabledState() {
+        if (getCurrentDataSet() == null) {
+            setEnabled(false);
+        } else {
+            updateEnabledState(getCurrentDataSet().getSelected());
+        }
+	}
+
+	@Override
+	protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
+        setEnabled(Utils.exists(selection, OsmPrimitive.wayPredicate));
+	}
+}
Index: applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadPanel.java
===================================================================
--- applications/editors/josm/plugins/download_along/src/org/openstreetmap/josm/plugin/download_along/DownloadPanel.java	(revision 29745)
+++ 	(revision )
@@ -1,145 +1,0 @@
-package org.openstreetmap.josm.plugin.download_along;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.GridBagLayout;
-
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.event.ChangeListener;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.GBC;
-
-public class DownloadPanel extends JPanel {
-
-	// Data types to download
-    private final JCheckBox cbDownloadOsmData;
-    private final JCheckBox cbDownloadGpxData;
-
-    // Legacy list of values
-	private static final Integer dist[] = { 5000, 500, 50 };
-	private static final Integer area[] = { 20, 10, 5, 1 };
-	
-	private final JList buffer;
-	private final JList maxRect;
-	
-	// Get value from preferences, taking into account legacy plugin stored only index from list of values instead of real value
-	private static final double getPreferenceValue(String prefKey, Integer array[]) {
-		int legacyIndex = Main.pref.getInteger(prefKey, array[0]);
-		return (0 <= legacyIndex && legacyIndex < array.length)
-				? array[legacyIndex] 
-				: Main.pref.getDouble(prefKey, array[0]);
-	}
-	
-	/**
-	 * Constructs a new {@code DownloadPanel}.
-	 */
-	public DownloadPanel() {
-		super(new GridBagLayout());
-
-		cbDownloadOsmData = new JCheckBox(tr("OpenStreetMap data"), Main.pref.getBoolean(DownloadAlong.PREF_DOWNLOAD_ALONG_OSM, true));
-        cbDownloadOsmData.setToolTipText(tr("Select to download OSM data."));
-        add(cbDownloadOsmData,  GBC.std().insets(1,5,1,5));
-        cbDownloadGpxData = new JCheckBox(tr("Raw GPS data"), Main.pref.getBoolean(DownloadAlong.PREF_DOWNLOAD_ALONG_GPS, false));
-        cbDownloadGpxData.setToolTipText(tr("Select to download GPS traces."));
-        add(cbDownloadGpxData,  GBC.eol().insets(5,5,1,5));
-        
-		add(new JLabel(tr("Download everything within:")), GBC.eol());
-		String s[] = new String[dist.length];
-		for (int i = 0; i < dist.length; ++i) {
-			s[i] = tr("{0} meters", dist[i]);
-		}
-		buffer = new JList(s);
-		
-		double distanceValue = getPreferenceValue(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_DISTANCE, dist);
-		int distanceLegacyIndex = Main.pref.getInteger(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_DISTANCE, dist[0]);
-		if (distanceLegacyIndex == dist[0]) {
-			for (int i = 0; i < dist.length; i++) {
-				if (dist[i] == (int)distanceValue) {
-					distanceLegacyIndex = i;
-					break;
-				}
-			}
-		}
-		
-		buffer.setSelectedIndex(distanceLegacyIndex);
-		add(buffer, GBC.eol());
-
-		add(new JLabel(tr("Maximum area per request:")), GBC.eol());
-		s = new String[area.length];
-		for (int i = 0; i < area.length; ++i) {
-			s[i] = tr("{0} sq km", area[i]);
-		}
-		maxRect = new JList(s);
-
-		double areaValue = getPreferenceValue(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_AREA, area);
-		int areaLegacyIndex = Main.pref.getInteger(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_AREA, area[0]);
-		if (areaLegacyIndex == area[0]) {
-			for (int i = 0; i < area.length; i++) {
-				if (area[i] == (int)areaValue) {
-					areaLegacyIndex = i;
-					break;
-				}
-			}
-		}
-		
-		maxRect.setSelectedIndex(areaLegacyIndex);
-		add(maxRect, GBC.eol());
-	}
-	
-	/**
-	 * Gets the maximum distance in meters
-	 * @return The maximum distance, in meters
-	 */
-	public final double getDistance() {
-		return dist[buffer.getSelectedIndex()];
-	}
-
-	/**
-	 * Gets the maximum area in squared kilometers
-	 * @return The maximum distance, in squared kilometers
-	 */
-	public final double getArea() {
-		return area[maxRect.getSelectedIndex()];
-	}
-	
-    /**
-     * Replies true if the user selected to download OSM data
-     *
-     * @return true if the user selected to download OSM data
-     */
-    public boolean isDownloadOsmData() {
-        return cbDownloadOsmData.isSelected();
-    }
-
-    /**
-     * Replies true if the user selected to download GPX data
-     *
-     * @return true if the user selected to download GPX data
-     */
-    public boolean isDownloadGpxData() {
-        return cbDownloadGpxData.isSelected();
-    }
-	
-    /**
-     * Remembers the current settings in the download panel
-     */
-    public final void rememberSettings() {
-		Main.pref.putDouble(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_DISTANCE, getDistance());
-		Main.pref.putDouble(DownloadAlong.PREF_DOWNLOAD_ALONG_TRACK_AREA, getArea());
-		Main.pref.put(DownloadAlong.PREF_DOWNLOAD_ALONG_OSM, isDownloadOsmData());
-		Main.pref.put(DownloadAlong.PREF_DOWNLOAD_ALONG_GPS, isDownloadGpxData());
-    }
-    
-    /**
-     * Adds a change listener to comboboxes
-     * @param listener The listener that will be notified of each combobox change
-     */
-    public final void addChangeListener(ChangeListener listener) {
-    	cbDownloadGpxData.addChangeListener(listener);
-    	cbDownloadOsmData.addChangeListener(listener);
-    }
-}
