Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 16687)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 16688)
@@ -77,31 +77,6 @@
         }
         combobox.setEditor(tf);
+        combobox.setSelectedItem(getItemToSelect(def, presetInitiallyMatches));
 
-        if (usage.hasUniqueValue()) {
-            // all items have the same value (and there were no unset items)
-            originalValue = getListEntry(usage.getFirst());
-            combobox.setSelectedItem(originalValue);
-        } else if (def != null && usage.unused()) {
-            // default is set and all items were unset
-            if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || isForceUseLastAsDefault()) {
-                // selected osm primitives are untagged or filling default feature is enabled
-                combobox.setSelectedItem(getListEntry(def).getDisplayValue());
-            } else {
-                // selected osm primitives are tagged and filling default feature is disabled
-                combobox.setSelectedItem("");
-            }
-            originalValue = getListEntry(DIFFERENT);
-        } else if (usage.unused()) {
-            // all items were unset (and so is default)
-            originalValue = getListEntry("");
-            if (!presetInitiallyMatches && isUseLastAsDefault() && LAST_VALUES.containsKey(key)) {
-                combobox.setSelectedItem(getListEntry(LAST_VALUES.get(key)));
-            } else {
-                combobox.setSelectedItem(originalValue);
-            }
-        } else {
-            originalValue = getListEntry(DIFFERENT);
-            combobox.setSelectedItem(originalValue);
-        }
         if (key != null && ("colour".equals(key) || key.startsWith("colour:") || key.endsWith(":colour"))) {
             p.add(combobox, GBC.std().fill(GBC.HORIZONTAL));
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 16687)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 16688)
@@ -517,4 +517,35 @@
     }
 
+    protected Object getItemToSelect(String def, boolean presetInitiallyMatches) {
+        final Object itemToSelect;
+        if (usage.hasUniqueValue()) {
+            // all items have the same value (and there were no unset items)
+            originalValue = getListEntry(usage.getFirst());
+            itemToSelect = originalValue;
+        } else if (def != null && usage.unused()) {
+            // default is set and all items were unset
+            if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || isForceUseLastAsDefault()) {
+                // selected osm primitives are untagged or filling default feature is enabled
+                itemToSelect = getListEntry(def).getDisplayValue();
+            } else {
+                // selected osm primitives are tagged and filling default feature is disabled
+                itemToSelect = "";
+            }
+            originalValue = getListEntry(DIFFERENT);
+        } else if (usage.unused()) {
+            // all items were unset (and so is default)
+            originalValue = getListEntry("");
+            if (!presetInitiallyMatches && isUseLastAsDefault() && LAST_VALUES.containsKey(key)) {
+                itemToSelect = getListEntry(LAST_VALUES.get(key));
+            } else {
+                itemToSelect = originalValue;
+            }
+        } else {
+            originalValue = getListEntry(DIFFERENT);
+            itemToSelect = originalValue;
+        }
+        return itemToSelect;
+    }
+
     protected String getSelectedValue() {
         Object obj = getSelectedItem();
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 16687)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 16688)
@@ -30,22 +30,5 @@
         ListCellRenderer<PresetListEntry> renderer = getListCellRenderer();
         list.setCellRenderer(renderer);
-
-        if (usage.hasUniqueValue() && !usage.unused()) {
-            originalValue = usage.getFirst();
-            list.setSelectedItem(originalValue);
-        } else if ((def != null && !usage.hadKeys()) || PROP_FILL_DEFAULT.get() || isForceUseLastAsDefault()) {
-            originalValue = DIFFERENT;
-            list.setSelectedItem(def);
-        } else if (usage.unused()) {
-            originalValue = null;
-            if (!presetInitiallyMatches && isUseLastAsDefault() && LAST_VALUES.containsKey(key)) {
-                list.setSelectedItem(getListEntry(LAST_VALUES.get(key)));
-            } else {
-                list.setSelectedItem(originalValue);
-            }
-        } else {
-            originalValue = DIFFERENT;
-            list.setSelectedItem(originalValue);
-        }
+        list.setSelectedItem(getItemToSelect(def, presetInitiallyMatches));
 
         JScrollPane sp = new JScrollPane(list);
