Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13853)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13854)
@@ -1080,7 +1080,14 @@
 
         @Override
-        public void actionPerformed(ActionEvent e) {
-            editHelper.addTag();
-            btnAdd.requestFocusInWindow();
+        public synchronized void actionPerformed(ActionEvent e) {
+            if (!isEnabled())
+                return;
+            setEnabled(false);
+            try {
+                editHelper.addTag();
+                btnAdd.requestFocusInWindow();
+            } finally {
+                setEnabled(true);
+            }
         }
     }
@@ -1098,13 +1105,18 @@
 
         @Override
-        public void actionPerformed(ActionEvent e) {
+        public synchronized void actionPerformed(ActionEvent e) {
             if (!isEnabled())
                 return;
-            if (tagTable.getSelectedRowCount() == 1) {
-                int row = tagTable.getSelectedRow();
-                editHelper.editTag(row, false);
-            } else if (membershipTable.getSelectedRowCount() == 1) {
-                int row = membershipTable.getSelectedRow();
-                editMembership(row);
+            setEnabled(false);
+            try {
+                if (tagTable.getSelectedRowCount() == 1) {
+                    int row = tagTable.getSelectedRow();
+                    editHelper.editTag(row, false);
+                } else if (membershipTable.getSelectedRowCount() == 1) {
+                    int row = membershipTable.getSelectedRow();
+                    editMembership(row);
+                }
+            } finally {
+                setEnabled(true);
             }
         }
