Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2169)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2170)
@@ -44,5 +44,7 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.QuadStateCheckBox;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionCache;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPritority;
@@ -62,5 +64,5 @@
  * It is also able to construct dialogs out of preset definitions.
  */
-public class TaggingPreset extends AbstractAction {
+public class TaggingPreset extends AbstractAction implements LayerChangeListener {
 
     public TaggingPresetMenu group = null;
@@ -480,5 +482,8 @@
      * Use this as default item for "do not select anything".
      */
-    public TaggingPreset() {}
+    public TaggingPreset() {
+        Layer.listeners.add(this);
+        updateEnabledState();
+    }
 
     /**
@@ -674,4 +679,6 @@
 
     public void actionPerformed(ActionEvent e) {
+        if (Main.main == null) return;
+        if (Main.main.getCurrentDataSet() == null) return;
         Collection<OsmPrimitive> sel = createSelection(Main.main.getCurrentDataSet().getSelected());
         PresetPanel p = createPanel(sel);
@@ -771,3 +778,19 @@
             return new SequenceCommand(tr("Change Properties"), cmds);
     }
+
+    protected void updateEnabledState() {
+        setEnabled(Main.main != null && Main.main.getCurrentDataSet() != null);
+    }
+
+    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+        updateEnabledState();
+    }
+
+    public void layerAdded(Layer newLayer) {
+        updateEnabledState();
+    }
+
+    public void layerRemoved(Layer oldLayer) {
+        updateEnabledState();
+    }
 }
