Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2054)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 2055)
@@ -68,12 +68,18 @@
     public String locale_name;
 
+    private static AutoCompletionList autoCompletionList;
+
+    public static AutoCompletionList getPresetAutocompletionList() {
+        if (autoCompletionList == null) {
+            autoCompletionList = new AutoCompletionList();
+        }
+        return autoCompletionList;
+    }
+
     public static abstract class Item {
         protected void initAutoCompletionField(AutoCompletingTextField field, String key) {
             OsmDataLayer layer = Main.main.getEditLayer();
             if (layer == null) return;
-            AutoCompletionCache cache = AutoCompletionCache.getCacheForLayer(layer);
-            AutoCompletionList list = new AutoCompletionList();
-            cache.populateWithValues(list, false /* don't append */);
-            field.setAutoCompletionList(list);
+            field.setAutoCompletionList(getPresetAutocompletionList());
         }
 
@@ -640,4 +646,16 @@
     }
 
+    protected void refreshAutocompletionList(final OsmDataLayer layer) {
+        Runnable task = new Runnable() {
+            public void run() {
+                System.out.print("refreshing preset auto completion list ...");
+                AutoCompletionCache.getCacheForLayer(layer).initFromDataSet();
+                AutoCompletionCache.getCacheForLayer(layer).populateWithValues( getPresetAutocompletionList(), false /* don't append */);
+                System.out.println("DONE");
+            }
+        };
+        new Thread(task).run();
+
+    }
     public PresetPanel createPanel(Collection<OsmPrimitive> selected) {
         if (data == null)
@@ -645,5 +663,5 @@
         OsmDataLayer layer = Main.main.getEditLayer();
         if (layer != null) {
-            AutoCompletionCache.getCacheForLayer(layer).initFromDataSet();
+            refreshAutocompletionList(layer);
         }
         PresetPanel p = new PresetPanel();
