Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 1757)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 1759)
@@ -67,5 +67,5 @@
     public static abstract class Item {
         public boolean focus = false;
-        abstract void addToPanel(JPanel p, Collection<OsmPrimitive> sel);
+        abstract boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel);
         abstract void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds);
         boolean requestFocusInWindow() {return false;}
@@ -133,5 +133,5 @@
         private JComponent value;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
 
             // find out if our key is already used in the selection.
@@ -162,4 +162,5 @@
             p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
             p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
+            return true;
         }
 
@@ -193,5 +194,5 @@
         private boolean def;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
 
             // find out if our key is already used in the selection.
@@ -238,4 +239,5 @@
             }
             p.add(check, GBC.eol().fill(GBC.HORIZONTAL));
+            return true;
         }
 
@@ -271,5 +273,5 @@
         private String originalValue;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
 
             // find out if our key is already used in the selection.
@@ -332,4 +334,5 @@
             p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
             p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
+            return true;
         }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
@@ -366,8 +369,9 @@
         public String locale_text;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             if(locale_text == null)
                 locale_text = tr(text);
             p.add(new JLabel(locale_text), GBC.eol());
+            return false;
         }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
@@ -380,5 +384,5 @@
         public String locale_href;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             if(locale_text == null)
                 locale_text = text == null ? tr("More information about this feature") : tr(text);
@@ -390,4 +394,5 @@
                 p.add(new UrlLabel(url, locale_text), GBC.eol().anchor(GBC.WEST));
             }
+            return false;
         }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
@@ -396,8 +401,9 @@
     public static class Optional extends Item {
         // TODO: Draw a box around optional stuff
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             p.add(new JLabel(" "), GBC.eol()); // space
             p.add(new JLabel(tr("Optional Attributes:")), GBC.eol());
             p.add(new JLabel(" "), GBC.eol()); // space
+            return false;
         }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
@@ -405,6 +411,7 @@
 
     public static class Space extends Item {
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             p.add(new JLabel(" "), GBC.eol()); // space
+            return false;
         }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {}
@@ -415,5 +422,5 @@
         public String value;
 
-        @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) { }
+        @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) { return false; }
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
             cmds.add(new ChangePropertyCommand(sel, key, value != null && !value.equals("") ? value : null));
@@ -570,8 +577,16 @@
     }
 
-    public JPanel createPanel(Collection<OsmPrimitive> selected) {
+    private class PresetPanel extends JPanel {
+        boolean hasElements = false;
+        PresetPanel()
+        {
+            super(new GridBagLayout());
+        }
+    }
+
+    public PresetPanel createPanel(Collection<OsmPrimitive> selected) {
         if (data == null)
             return null;
-        JPanel p = new JPanel(new GridBagLayout());
+        PresetPanel p = new PresetPanel();
         LinkedList<Item> l = new LinkedList<Item>();
         if(types != null)
@@ -592,5 +607,8 @@
                 l.add(i);
             else
-                i.addToPanel(p, selected);
+            {
+                if(i.addToPanel(p, selected))
+                    p.hasElements = true;
+            }
         }
         for(Item link : l)
@@ -601,10 +619,10 @@
     public void actionPerformed(ActionEvent e) {
         Collection<OsmPrimitive> sel = createSelection(Main.ds.getSelected());
-        JPanel p = createPanel(sel);
+        PresetPanel p = createPanel(sel);
         if (p == null)
             return;
 
         int answer = 1;
-        if (p.getComponentCount() != 0) {
+        if (p.getComponentCount() != 0 && (sel.size() == 0 || p.hasElements)) {
             String title = trn("Change {0} object", "Change {0} objects", sel.size(), sel.size());
             if(sel.size() == 0) {
