Index: trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java	(revision 15817)
+++ trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterButton.java	(revision 15818)
@@ -8,10 +8,13 @@
 import java.awt.event.ActionEvent;
 
+import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.actions.PreferencesAction;
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.preferences.display.DrawingPreference;
 
 /**
@@ -63,3 +66,15 @@
         super.paintComponent(g);
     }
+
+    static AutoFilterButton forOsmKey(String key) {
+        final String name = key + ":";
+        final AutoFilterButton button = new AutoFilterButton(new AutoFilter(key, "", null));
+        button.setAction(new AbstractAction(name) {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                PreferencesAction.forPreferenceSubTab("", "null", DrawingPreference.class).actionPerformed(e);
+            }
+        });
+        return button;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 15817)
+++ trunk/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java	(revision 15818)
@@ -182,7 +182,11 @@
 
     private synchronized void addNewButtons(NavigableSet<String> values) {
+        if (values.isEmpty()) {
+            return;
+        }
         int i = 0;
         int maxWidth = 16;
-        MapView mapView = MainApplication.getMap().mapView;
+        final AutoFilterButton keyButton = AutoFilterButton.forOsmKey(enabledRule.getKey());
+        addButton(keyButton, Integer.toString(Integer.MIN_VALUE), i++);
         for (final String value : values.descendingSet()) {
             CompiledFilter filter = new CompiledFilter(enabledRule.getKey(), value);
@@ -193,12 +197,17 @@
                 button.getModel().setPressed(true);
             }
-            buttons.put(value, button);
             maxWidth = Math.max(maxWidth, button.getPreferredSize().width);
-            mapView.add(button).setLocation(3, 60 + 22*i++);
+            addButton(button, value, i++);
         }
         for (AutoFilterButton b : buttons.values()) {
-            b.setSize(maxWidth, 20);
-        }
-        mapView.validate();
+            b.setSize(b == keyButton ? b.getPreferredSize().width : maxWidth, 20);
+        }
+        MainApplication.getMap().mapView.validate();
+    }
+
+    private void addButton(AutoFilterButton button, String value, int i) {
+        MapView mapView = MainApplication.getMap().mapView;
+        buttons.put(value, button);
+        mapView.add(button).setLocation(3, 60 + 22*i);
     }
 
