Index: /trunk/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java	(revision 13431)
@@ -10,4 +10,5 @@
 import javax.swing.JTabbedPane;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -136,3 +137,8 @@
         return subSettingMap != null ? subSettingMap.get(sub) : null;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Action/Preferences");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 13431)
@@ -42,4 +42,5 @@
 
     private final PreferenceTabbedPane tpPreferences = new PreferenceTabbedPane();
+    private final ContextSensitiveHelpAction helpAction = new ContextSensitiveHelpAction();
     private boolean canceled;
 
@@ -68,5 +69,5 @@
         btns.add(new JButton(new OKAction()));
         btns.add(new JButton(new CancelAction()));
-        btns.add(new JButton(new ContextSensitiveHelpAction(HelpUtil.ht("/Action/Preferences"))));
+        btns.add(new JButton(helpAction));
         pnl.add(expert, GBC.std().insets(5, 0, 0, 0));
         pnl.add(btns, GBC.std().fill(GBC.HORIZONTAL));
@@ -85,5 +86,15 @@
 
         InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
-        HelpUtil.setHelpContext(getRootPane(), HelpUtil.ht("/Action/Preferences"));
+        setHelpContext(HelpUtil.ht("/Action/Preferences"));
+    }
+
+    /**
+     * Sets the help context of the preferences dialog.
+     * @param helpContext new help context
+     * @since 13431
+     */
+    public final void setHelpContext(String helpContext) {
+        helpAction.setHelpTopic(helpContext);
+        HelpUtil.setHelpContext(getRootPane(), helpContext);
     }
 
@@ -97,4 +108,8 @@
     }
 
+    /**
+     * Determines if preferences changes have been canceled.
+     * @return {@code true} if preferences changes have been canceled
+     */
     public boolean isCanceled() {
         return canceled;
@@ -109,10 +124,9 @@
         if (visible) {
             // Make the pref window at most as large as the parent JOSM window
-            // Have to take window decorations into account or the windows will
-            // be too large
+            // Have to take window decorations into account or the windows will be too large
             Insets i = this.getParent().getInsets();
             Dimension p = this.getParent().getSize();
             p = new Dimension(Math.min(p.width-i.left-i.right, 700),
-                    Math.min(p.height-i.top-i.bottom, 800));
+                              Math.min(p.height-i.top-i.bottom, 800));
             new WindowGeometry(
                     getClass().getName() + ".geometry",
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 13431)
@@ -5,4 +5,5 @@
 
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Font;
 import java.awt.GridBagLayout;
@@ -610,4 +611,8 @@
                 }
             }
+            Container ancestor = getTopLevelAncestor();
+            if (ancestor instanceof PreferenceDialog) {
+                ((PreferenceDialog) ancestor).setHelpContext(preferenceSettings.getHelpContext());
+            }
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java	(revision 13431)
@@ -78,3 +78,10 @@
      */
     boolean selectSubTab(SubPreferenceSetting subPref);
+
+    /**
+     * Returns the help context for this preferences settings tab.
+     * @return the help context for this preferences settings tab
+     * @since 13431
+     */
+    String getHelpContext();
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 13431)
@@ -69,4 +69,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -993,4 +994,8 @@
         }
 
+        @Override
+        public String getHelpContext() {
+            return HelpUtil.ht("/Preferences/Toolbar");
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(revision 13431)
@@ -40,7 +40,6 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.PreferencesUtils;
-import org.openstreetmap.josm.spi.preferences.Setting;
-import org.openstreetmap.josm.spi.preferences.StringSetting;
 import org.openstreetmap.josm.gui.dialogs.LogShowDialog;
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.io.CustomConfigurator;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
@@ -52,4 +51,6 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.Setting;
+import org.openstreetmap.josm.spi.preferences.StringSetting;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -463,3 +464,8 @@
         return false;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Advanced");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/audio/AudioPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/audio/AudioPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/audio/AudioPreference.java	(revision 13431)
@@ -11,4 +11,5 @@
 import javax.swing.JPanel;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -147,3 +148,8 @@
         return false;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Audio");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/display/DisplayPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/display/DisplayPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/display/DisplayPreference.java	(revision 13431)
@@ -6,4 +6,5 @@
 import javax.swing.JTabbedPane;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -42,3 +43,8 @@
         gui.createPreferenceTab(this).add(getTabPane(), GBC.eol().fill(GBC.BOTH));
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Display");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 13431)
@@ -62,4 +62,5 @@
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -957,3 +958,8 @@
         MainApplication.getMenu().imageryMenu.refreshOffsetMenu();
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Imagery");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/map/MapPreference.java	(revision 13431)
@@ -6,4 +6,5 @@
 import javax.swing.JTabbedPane;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -41,3 +42,8 @@
         gui.createPreferenceTab(this).add(getTabPane(), GBC.eol().fill(GBC.BOTH));
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Map");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java	(revision 13431)
@@ -649,3 +649,8 @@
         }
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Plugins");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java	(revision 13431)
@@ -28,4 +28,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -219,3 +220,8 @@
         return false;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/RemoteControl");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java	(revision 13431)
@@ -110,3 +110,8 @@
         return false;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Connection");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/ShortcutPreference.java	(revision 13431)
@@ -6,4 +6,5 @@
 import javax.swing.JPanel;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -58,3 +59,8 @@
         defaultFilter = substring;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Shortcuts");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java	(revision 13430)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorPreference.java	(revision 13431)
@@ -6,4 +6,5 @@
 import javax.swing.JTabbedPane;
 
+import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
@@ -44,3 +45,8 @@
         return false;
     }
+
+    @Override
+    public String getHelpContext() {
+        return HelpUtil.ht("/Preferences/Validator");
+    }
 }
