Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 7862)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 7863)
@@ -247,6 +247,7 @@
             }
             super.setSelectedItem(new AutoCompletionListItem(s, AutoCompletionItemPriority.UNKNOWN));
-        } else
-            throw new IllegalArgumentException();
+        } else {
+            throw new IllegalArgumentException("Unsupported item: "+item);
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionListItem.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionListItem.java	(revision 7862)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionListItem.java	(revision 7863)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.tagging.ac;
+
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -79,6 +81,5 @@
      */
     public void setValue(String value) {
-        if (value == null)
-            throw new IllegalArgumentException("argument 'value' must not be null");
+        CheckParameterUtil.ensureParameterNotNull(value, "value");
         this.value = value;
     }
@@ -108,4 +109,6 @@
         if (obj == null)
             return false;
+        if (obj instanceof String)
+            return obj.equals(value);
         if (getClass() != obj.getClass())
             return false;
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 7862)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 7863)
@@ -160,5 +160,5 @@
             JList<E> list = getList();
             if (list != null) {
-                if (list.getPrototypeCellValue() != prototype) {
+                if (!prototype.equals(list.getPrototypeCellValue())) {
                     list.setPrototypeCellValue(prototype);
                 }
@@ -197,12 +197,10 @@
 
         private void enableMenu() {
-            if (launcher == null) {
-                if (editor != null) {
-                    Component editorComponent = editor.getEditorComponent();
-                    if (editorComponent instanceof JTextComponent) {
-                        component = (JTextComponent) editorComponent;
-                        component.addMouseListener(this);
-                        launcher = TextContextualPopupMenu.enableMenuFor(component);
-                    }
+            if (launcher == null && editor != null) {
+                Component editorComponent = editor.getEditorComponent();
+                if (editorComponent instanceof JTextComponent) {
+                    component = (JTextComponent) editorComponent;
+                    component.addMouseListener(this);
+                    launcher = TextContextualPopupMenu.enableMenuFor(component);
                 }
             }
@@ -229,8 +227,6 @@
 
         private void processEvent(MouseEvent e) {
-            if (launcher != null && !e.isPopupTrigger()) {
-                if (launcher.getMenu().isShowing()) {
-                    launcher.getMenu().setVisible(false);
-                }
+            if (launcher != null && !e.isPopupTrigger() && launcher.getMenu().isShowing()) {
+                launcher.getMenu().setVisible(false);
             }
         }
