Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7534)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7536)
@@ -78,4 +78,5 @@
  *
  * @author imi
+ * @since 74
  */
 public class Preferences {
@@ -1660,9 +1661,4 @@
 
         String[] obsolete = {
-                "downloadAlong.downloadAlongTrack.distance",   // 07/2013 - can be removed mid-2014. Replaced by downloadAlongWay.distance
-                "downloadAlong.downloadAlongTrack.area",       // 07/2013 - can be removed mid-2014. Replaced by downloadAlongWay.area
-                "gpxLayer.downloadAlongTrack.distance",        // 07/2013 - can be removed mid-2014. Replaced by downloadAlongTrack.distance
-                "gpxLayer.downloadAlongTrack.area",            // 07/2013 - can be removed mid-2014. Replaced by downloadAlongTrack.area
-                "gpxLayer.downloadAlongTrack.near",            // 07/2013 - can be removed mid-2014. Replaced by downloadAlongTrack.near
                 "validator.tests",                             // 01/2014 - can be removed end-2014. Replaced by validator.skip
                 "validator.testsBeforeUpload",                 // 01/2014 - can be removed end-2014. Replaced by validator.skipBeforeUpload
@@ -1681,9 +1677,4 @@
     }
 
-    public static boolean isEqual(Setting<?> a, Setting<?> b) {
-        if (a == null) return b == null;
-        return a.equals(b);
-    }
-
     /**
      * Enables or not the preferences file auto-save mechanism (save each time a setting is changed).
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 7534)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java	(revision 7536)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Dimension;
 import java.awt.GridBagLayout;
 
@@ -11,4 +12,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
@@ -25,5 +28,5 @@
  */
 public class DownloadAlongPanel extends JPanel {
-    
+
     // Preferences keys
     private final String prefOsm;
@@ -37,12 +40,8 @@
     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<String> buffer;
-    private final JList<String> maxRect;
+    private final JSpinner buffer;
+    private final JSpinner maxRect;
     private final JList<String> downloadNear;
-    
+
     /**
      * Constructs a new {@code DownloadPanel}.
@@ -55,5 +54,5 @@
     public DownloadAlongPanel(String prefOsm, String prefGps, String prefDist, String prefArea, String prefNear) {
         super(new GridBagLayout());
-        
+
         this.prefOsm = prefOsm;
         this.prefGps = prefGps;
@@ -64,47 +63,24 @@
         cbDownloadOsmData = new JCheckBox(tr("OpenStreetMap data"), Main.pref.getBoolean(prefOsm, true));
         cbDownloadOsmData.setToolTipText(tr("Select to download OSM data."));
-        add(cbDownloadOsmData,  GBC.std().insets(1,5,1,5));
+        add(cbDownloadOsmData, GBC.std().insets(1,5,1,5));
         cbDownloadGpxData = new JCheckBox(tr("Raw GPS data"), Main.pref.getBoolean(prefGps, 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 = Main.pref.getDouble(prefDist, dist[0]);
-        int distanceLegacyIndex = 0;
-        for (int i = 0; i < dist.length; i++) {
-            if (dist[i] == (int)distanceValue) {
-                distanceLegacyIndex = i;
-                break;
+        add(cbDownloadGpxData, GBC.eol().insets(5,5,1,5));
+
+        add(new JLabel(tr("Download everything within:")), GBC.std());
+        buffer = new JSpinner(new SpinnerNumberModel(50.0, 10.0, 5000.0, 1.0));
+        add(buffer, GBC.std().insets(5,5,5,5));
+        add(new JLabel(tr("meters")), GBC.eol());
+
+        add(new JLabel(tr("Maximum area per request:")), GBC.std());
+        maxRect = new JSpinner(new SpinnerNumberModel(20.0, 1.0, 25.0, 1.0)) {
+            @Override
+            public Dimension getPreferredSize() {
+                return buffer.getPreferredSize();
             }
-        }
-        
-        buffer.setSelectedIndex(distanceLegacyIndex);
-        add(buffer, GBC.eol());
+        };
+        add(maxRect, GBC.std().insets(5,5,5,5));
+        add(new JLabel(tr("sq km")), 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 = Main.pref.getDouble(prefArea, area[0]);
-        int areaLegacyIndex = 0;
-        for (int i = 0; i < area.length; i++) {
-            if (area[i] == (int)areaValue) {
-                areaLegacyIndex = i;
-                break;
-            }
-        }
-        
-        maxRect.setSelectedIndex(areaLegacyIndex);
-        add(maxRect, GBC.eol());
-        
         if (prefNear != null) {
             add(new JLabel(tr("Download near:")), GBC.eol());
@@ -116,5 +92,5 @@
         }
     }
-    
+
     /**
      * Gets the maximum distance in meters
@@ -122,5 +98,5 @@
      */
     public final double getDistance() {
-        return dist[buffer.getSelectedIndex()];
+        return (double) buffer.getValue();
     }
 
@@ -130,7 +106,7 @@
      */
     public final double getArea() {
-        return area[maxRect.getSelectedIndex()];
+        return (double) maxRect.getValue();
     }
-    
+
     /**
      * Gets the "download near" choosen value
@@ -140,5 +116,5 @@
         return downloadNear.getSelectedIndex();
     }
-    
+
     /**
      * Replies true if the user selected to download OSM data
@@ -158,5 +134,5 @@
         return cbDownloadGpxData.isSelected();
     }
-    
+
     /**
      * Remembers the current settings in the download panel
@@ -171,5 +147,5 @@
         }
     }
-    
+
     /**
      * Adds a change listener to comboboxes
@@ -202,5 +178,5 @@
                 )
         };
-        
+
         addChangeListener(new ChangeListener() {
             @Override public void stateChanged(ChangeEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 7534)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 7536)
@@ -17,4 +17,5 @@
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 
 import javax.swing.AbstractAction;
@@ -287,5 +288,5 @@
             PrefEntry en = new PrefEntry(e.getKey(), value, def, false);
             // after changes we have nondefault value. Value is changed if is not equal to old value
-            if ( !Preferences.isEqual(old, value) ) {
+            if (!Objects.equals(old, value)) {
                 en.markAsChanged();
             }
