Index: trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java	(revision 6499)
+++ trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java	(revision 6499)
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+
+import java.awt.event.ActionEvent;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+/**
+ * This class toggles hatched background rendering of areas outside of the downloaded areas.
+ */
+public class HatchAreaOutsideDownloadAction extends PreferenceToggleAction {
+
+    private static final BooleanProperty PROP = new BooleanProperty("mappaint.hatch-outside-download-area", true);
+
+    /**
+     * Constructs a new {@link HatchAreaOutsideDownloadAction}.
+     */
+    public HatchAreaOutsideDownloadAction() {
+        super(tr("Hatch area outside download"),
+                tr("Enable/disable hatched background rendering of areas outside of the downloaded areas."),
+                PROP
+        );
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(Main.main.hasEditLayer());
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        super.actionPerformed(e);
+        if (Main.isDisplayingMapView()) {
+            Main.map.mapView.repaint();
+        }
+    }
+
+    public static boolean isHatchEnabled() {
+        return PROP.get();
+    }
+}
Index: trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java	(revision 6474)
+++ trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java	(revision 6499)
@@ -7,18 +7,23 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 public class PreferenceToggleAction extends JosmAction implements PreferenceChangedListener {
 
-    private final JCheckBoxMenuItem checkbox;
-    private final String prefKey;
-    private final boolean prefDefault;
+    protected final JCheckBoxMenuItem checkbox;
+    protected final BooleanProperty property;
 
     public PreferenceToggleAction(String name, String tooltip, String prefKey, boolean prefDefault) {
+        this(name, tooltip, new BooleanProperty(prefKey, prefDefault));
+    }
+
+    public PreferenceToggleAction(String name, String tooltip, BooleanProperty property) {
         super(name, null, tooltip, null, false);
-        putValue("toolbar", "toggle-" + prefKey);
-        this.prefKey = prefKey;
-        this.prefDefault = prefDefault;
+        CheckParameterUtil.ensureParameterNotNull(property, "property");
+        putValue("toolbar", "toggle-" + property.getKey());
+        this.property = property;
         this.checkbox = new JCheckBoxMenuItem(this);
-        this.checkbox.setSelected(Main.pref.getBoolean(prefKey, prefDefault));
+        this.checkbox.setSelected(property.get());
         Main.pref.addPreferenceChangeListener(this);
     }
@@ -26,5 +31,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.pref.put(prefKey, checkbox.isSelected());
+        property.put(checkbox.isSelected());
     }
 
@@ -35,6 +40,6 @@
     @Override
     public void preferenceChanged(Preferences.PreferenceChangeEvent e) {
-        if (prefKey.equals(e.getKey())) {
-            checkbox.setSelected(Main.pref.getBoolean(prefKey, prefDefault));
+        if (property.getKey().equals(e.getKey())) {
+            checkbox.setSelected(property.get());
         }
     }
