Index: trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 16527)
+++ trunk/src/org/openstreetmap/josm/actions/DialogsToggleAction.java	(revision 16528)
@@ -52,6 +52,6 @@
             boolean selected = isSelected();
             if (!selected) {
-                toolbarPreviouslyVisible = Config.getPref().getBoolean("toolbar.visible", true);
-                sideToolbarPreviouslyVisible = Config.getPref().getBoolean("sidetoolbar.visible", true);
+                toolbarPreviouslyVisible = MapFrame.TOOLBAR_VISIBLE.get();
+                sideToolbarPreviouslyVisible = MapFrame.SIDE_TOOLBAR_VISIBLE.get();
             }
             MapFrame map = MainApplication.getMap();
@@ -61,8 +61,8 @@
             // Toolbars listen to preference changes, use it here
             if (!Config.getPref().getBoolean("toolbar.always-visible", true) && (!selected || toolbarPreviouslyVisible)) {
-                Config.getPref().putBoolean("toolbar.visible", selected);
+                MapFrame.TOOLBAR_VISIBLE.put(selected);
             }
             if (!Config.getPref().getBoolean("sidetoolbar.always-visible", true) && (!selected || sideToolbarPreviouslyVisible)) {
-                Config.getPref().putBoolean("sidetoolbar.visible", selected);
+                MapFrame.SIDE_TOOLBAR_VISIBLE.put(selected);
             }
             map.mapView.rememberLastPositionOnScreen();
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 16527)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 16528)
@@ -823,8 +823,8 @@
         viewMenu.add(new PreferenceToggleAction(tr("Main toolbar"),
                 tr("Toggles the visibility of the main toolbar (i.e., the horizontal toolbar)"),
-                "toolbar.visible", true).getCheckbox());
+                MapFrame.TOOLBAR_VISIBLE.getKey(), MapFrame.TOOLBAR_VISIBLE.getDefaultValue()).getCheckbox());
         viewMenu.add(new PreferenceToggleAction(tr("Edit toolbar"),
                 tr("Toggles the visibility of the edit toolbar (i.e., the vertical tool)"),
-                "sidetoolbar.visible", true).getCheckbox());
+                MapFrame.SIDE_TOOLBAR_VISIBLE.getKey(), MapFrame.SIDE_TOOLBAR_VISIBLE.getDefaultValue()).getCheckbox());
         // -- dialogs panel toggle action
         final JCheckBoxMenuItem dialogsToggle = new JCheckBoxMenuItem(dialogsToggleAction);
Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 16527)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 16528)
@@ -57,4 +57,5 @@
 import org.openstreetmap.josm.actions.mapmode.ZoomAction;
 import org.openstreetmap.josm.data.ViewportData;
+import org.openstreetmap.josm.data.preferences.AbstractProperty;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
@@ -83,5 +84,4 @@
 import org.openstreetmap.josm.gui.util.AdvancedKeyPressDetector;
 import org.openstreetmap.josm.spi.preferences.Config;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
@@ -108,4 +108,12 @@
      */
     public static final BooleanProperty MODELESS = new BooleanProperty("modeless", false);
+    /**
+     * Whether the toolbar is visible
+     */
+    public static final BooleanProperty TOOLBAR_VISIBLE = new BooleanProperty("toolbar.visible", true);
+    /**
+     * Whether the side toolbar is visible
+     */
+    public static final BooleanProperty SIDE_TOOLBAR_VISIBLE = new BooleanProperty("sidetoolbar.visible", true);
     /**
      * The current mode, this frame operates.
@@ -346,5 +354,5 @@
         rememberToggleDialogWidth();
         dialogsPanel.destroy();
-        Config.getPref().removePreferenceChangeListener(sidetoolbarPreferencesChangedListener);
+        SIDE_TOOLBAR_VISIBLE.removeListener(sidetoolbarPreferencesChangedListener);
         for (int i = 0; i < toolBarActions.getComponentCount(); ++i) {
             if (toolBarActions.getComponent(i) instanceof Destroyable) {
@@ -546,11 +554,7 @@
             sideToolBar = svp;
         }
-        sideToolBar.setVisible(Config.getPref().getBoolean("sidetoolbar.visible", true));
-        sidetoolbarPreferencesChangedListener = e -> {
-            if ("sidetoolbar.visible".equals(e.getKey())) {
-                sideToolBar.setVisible(Config.getPref().getBoolean("sidetoolbar.visible"));
-            }
-        };
-        Config.getPref().addPreferenceChangeListener(sidetoolbarPreferencesChangedListener);
+        sideToolBar.setVisible(SIDE_TOOLBAR_VISIBLE.get());
+        sidetoolbarPreferencesChangedListener = e -> sideToolBar.setVisible(e.getProperty().get());
+        SIDE_TOOLBAR_VISIBLE.addListener(sidetoolbarPreferencesChangedListener);
 
         /**
@@ -633,5 +637,5 @@
                 @Override
                 public void actionPerformed(ActionEvent e) {
-                    Config.getPref().putBoolean("sidetoolbar.visible", false);
+                    SIDE_TOOLBAR_VISIBLE.put(false);
                 }
             });
@@ -802,5 +806,5 @@
     private static final CopyOnWriteArrayList<MapModeChangeListener> mapModeChangeListeners = new CopyOnWriteArrayList<>();
 
-    private transient PreferenceChangedListener sidetoolbarPreferencesChangedListener;
+    private transient AbstractProperty.ValueChangeListener<Boolean> sidetoolbarPreferencesChangedListener;
     /**
      * Adds a mapMode change listener
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 16527)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 16528)
@@ -70,4 +70,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
@@ -1016,9 +1017,5 @@
             control.setComponentPopupMenu(popupMenu);
         });
-        Config.getPref().addPreferenceChangeListener(e -> {
-            if ("toolbar.visible".equals(e.getKey())) {
-                refreshToolbarControl();
-            }
-        });
+        MapFrame.TOOLBAR_VISIBLE.addListener(e -> refreshToolbarControl());
     }
 
@@ -1202,5 +1199,5 @@
         }
 
-        boolean visible = Config.getPref().getBoolean("toolbar.visible", true);
+        boolean visible = MapFrame.TOOLBAR_VISIBLE.get();
 
         control.setFocusTraversalKeysEnabled(!unregisterTab);
