Index: /trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 12346)
+++ /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 12347)
@@ -54,4 +54,6 @@
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.ViewportData;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.dialogs.ChangesetDialog;
 import org.openstreetmap.josm.gui.dialogs.CommandStackDialog;
@@ -83,5 +85,4 @@
 import org.openstreetmap.josm.tools.Shortcut;
 
-
 /**
  * One Map frame with one dataset behind. This is the container gui class whose
@@ -91,5 +92,15 @@
  */
 public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeListener, LayerChangeListener {
-
+    /**
+     * Default width of the toggle dialog area.
+     */
+    public static final int DEF_TOGGLE_DLG_WIDTH = 330;
+
+    private final static IntegerProperty TOGGLE_DIALOGS_WIDTH = new IntegerProperty("toggleDialogs.width", DEF_TOGGLE_DLG_WIDTH);
+    /**
+     * Do not require to switch modes (potlatch style workflow) for drawing/selecting map modes.
+     * @since 12347
+     */
+    public final static BooleanProperty MODELESS = new BooleanProperty("modeless", false);
     /**
      * The current mode, this frame operates.
@@ -177,9 +188,4 @@
 
     /**
-     * Default width of the toggle dialog area.
-     */
-    public static final int DEF_TOGGLE_DLG_WIDTH = 330;
-
-    /**
      * Constructs a new {@code MapFrame}.
      * @param viewportData the initial viewport of the map. Can be null, then
@@ -221,5 +227,5 @@
 
         dialogsPanel.setLayout(new BoxLayout(dialogsPanel, BoxLayout.Y_AXIS));
-        dialogsPanel.setPreferredSize(new Dimension(Main.pref.getInteger("toggleDialogs.width", DEF_TOGGLE_DLG_WIDTH), 0));
+        dialogsPanel.setPreferredSize(new Dimension(TOGGLE_DIALOGS_WIDTH.get(), 0));
         dialogsPanel.setMinimumSize(new Dimension(24, 0));
         mapView.setMinimumSize(new Dimension(10, 0));
@@ -289,5 +295,5 @@
 
     public boolean selectSelectTool(boolean onlyIfModeless) {
-        if (onlyIfModeless && !Main.pref.getBoolean("modeless", false))
+        if (onlyIfModeless && !MODELESS.get())
             return false;
 
@@ -296,5 +302,5 @@
 
     public boolean selectDrawTool(boolean onlyIfModeless) {
-        if (onlyIfModeless && !Main.pref.getBoolean("modeless", false))
+        if (onlyIfModeless && !MODELESS.get())
             return false;
 
@@ -303,5 +309,5 @@
 
     public boolean selectZoomTool(boolean onlyIfModeless) {
-        if (onlyIfModeless && !Main.pref.getBoolean("modeless", false))
+        if (onlyIfModeless && !MODELESS.get())
             return false;
 
@@ -335,4 +341,8 @@
     }
 
+    /**
+     * Gets the action of the default (first) map mode
+     * @return That action
+     */
     public Action getDefaultButtonAction() {
         return ((AbstractButton) toolBarActions.getComponent(0)).getAction();
@@ -346,4 +356,9 @@
     }
 
+    /**
+     * Adds a new toggle dialog to the left button list. It is displayed in expert and normal mode
+     * @param dlg The dialog
+     * @return The button
+     */
     public IconToggleButton addToggleDialog(final ToggleDialog dlg) {
         return addToggleDialog(dlg, false);
@@ -663,8 +678,12 @@
     }
 
+    /**
+     * Shows or hides the side dialog panel
+     * @param visible The new visibility
+     */
     public void setDialogsPanelVisible(boolean visible) {
         rememberToggleDialogWidth();
         dialogsPanel.setVisible(visible);
-        splitPane.setDividerLocation(visible ? splitPane.getWidth()-Main.pref.getInteger("toggleDialogs.width", DEF_TOGGLE_DLG_WIDTH) : 0);
+        splitPane.setDividerLocation(visible ? splitPane.getWidth() - TOGGLE_DIALOGS_WIDTH.get() : 0);
         splitPane.setDividerSize(visible ? 5 : 0);
     }
@@ -675,5 +694,5 @@
     public void rememberToggleDialogWidth() {
         if (dialogsPanel.isVisible()) {
-            Main.pref.putInteger("toggleDialogs.width", splitPane.getWidth()-splitPane.getDividerLocation());
+            TOGGLE_DIALOGS_WIDTH.put(splitPane.getWidth() - splitPane.getDividerLocation());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java	(revision 12346)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java	(revision 12347)
@@ -27,4 +27,5 @@
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.preferences.StringProperty;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapMover;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -135,5 +136,5 @@
 
         modeless.setToolTipText(tr("Do not require to switch modes (potlatch style workflow)"));
-        modeless.setSelected(Main.pref.getBoolean("modeless", false));
+        modeless.setSelected(MapFrame.MODELESS.get());
         ExpertToggleAction.addVisibilitySwitcher(modeless);
 
@@ -203,5 +204,5 @@
         Main.pref.put("osm-primitives.showid", showID.isSelected());
         Main.pref.put("osm-primitives.localize-name", showLocalizedName.isSelected());
-        Main.pref.put("modeless", modeless.isSelected());
+        MapFrame.MODELESS.put(modeless.isSelected());
         Main.pref.put(ToggleDialog.PROP_DYNAMIC_BUTTONS.getKey(), dynamicButtons.isSelected());
         Main.pref.put(DateUtils.PROP_ISO_DATES.getKey(), isoDates.isSelected());
