Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 5981)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 5982)
@@ -24,4 +24,6 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.Node;
@@ -79,7 +81,5 @@
  * @author Ole Jørgen Brønner (olejorgenb)
  */
-public class ParallelWayAction extends MapMode implements AWTEventListener, MapViewPaintable {
-
-    private static final long serialVersionUID = 1L;
+public class ParallelWayAction extends MapMode implements AWTEventListener, MapViewPaintable, PreferenceChangedListener {
 
     private enum Mode {
@@ -100,4 +100,5 @@
     private double snapDistanceImperial;
     private double snapDistanceChinese;
+    private double snapDistanceNautical;
 
     private ModifiersSpec snapModifierCombo;
@@ -119,5 +120,5 @@
     private WaySegment referenceSegment;
     private ParallelWays pWays;
-    LinkedHashSet<Way> sourceWays;
+    private LinkedHashSet<Way> sourceWays;
     private EastNorth helperLineStart;
     private EastNorth helperLineEnd;
@@ -131,4 +132,5 @@
         mv = mapFrame.mapView;
         updateModeLocalPreferences();
+        Main.pref.addPreferenceChangeListener(this);
     }
 
@@ -199,5 +201,4 @@
     private void updateModeLocalPreferences() {
         // @formatter:off
-        //snapThreshold        = Main.pref.getDouble (prefKey("snap-threshold"), 0.35); // Old preference was stored in meters, hence the new name (percent)
         snapThreshold        = Main.pref.getDouble (prefKey("snap-threshold-percent"), 0.70);
         snapDefault          = Main.pref.getBoolean(prefKey("snap-default"),      true);
@@ -207,4 +208,5 @@
         snapDistanceImperial = Main.pref.getDouble(prefKey("snap-distance-imperial"), 1);
         snapDistanceChinese  = Main.pref.getDouble(prefKey("snap-distance-chinese"), 1);
+        snapDistanceNautical = Main.pref.getDouble(prefKey("snap-distance-nautical"), 0.1);
 
         snapModifierCombo           = new ModifiersSpec(getStringPref("snap-modifier-combo",             "?sC"));
@@ -400,5 +402,5 @@
         }
 
-        //// Calculate distance to the reference line
+        // Calculate distance to the reference line
         EastNorth enp = mv.getEastNorth((int) p.getX(), (int) p.getY());
         EastNorth nearestPointOnRefLine = Geometry.closestPointToLine(referenceSegment.getFirstNode().getEastNorth(),
@@ -423,4 +425,6 @@
             } else if (som.equals(NavigatableComponent.IMPERIAL_SOM)) {
                 snapDistance = snapDistanceImperial * NavigatableComponent.IMPERIAL_SOM.aValue;
+            } else if (som.equals(NavigatableComponent.NAUTICAL_MILE_SOM)) {
+                snapDistance = snapDistanceNautical * NavigatableComponent.NAUTICAL_MILE_SOM.aValue;
             } else {
                 snapDistance = snapDistanceMetric; // Metric system by default
@@ -577,3 +581,10 @@
         return getStringPref(subKey, null);
     }
+
+    @Override
+    public void preferenceChanged(PreferenceChangeEvent e) {
+        if (e.getKey().startsWith(prefKey(""))) {
+            updateAllPreferences();
+        }
+    }
 }
