Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java	(revision 14338)
@@ -173,4 +173,5 @@
 		aclViewer = new AutoCompletionListViewer(autoCompletionList);
 		tagEditor.setAutoCompletionList(autoCompletionList);
+		tagEditor.setAutoCompletionCache(acCache);
 		aclViewer.addAutoCompletionListListener(tagEditor);		
 		
@@ -305,5 +306,6 @@
 	 */
 	public void startEditSession() {		
-		model.initFromJOSMSelection();
+		model.clearAppliedPresets();
+		model.initFromJOSMSelection();		
 		acCache.initFromJOSMDataset();
 		getModel().ensureOneTag();
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java	(revision 14338)
@@ -85,5 +85,5 @@
 		Item item= (Item)presets.getSelectedItem();
 		if (item != null && model !=null) {
-			model.removeAppliedItem(item);
+			model.removeAppliedPreset(item);
 		}
 	}
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java	(revision 14338)
@@ -128,4 +128,5 @@
 		}
 		
+		logger.info("acCache=" + acCache);
 		for (String value : acCache.getValues(forKey)) {
 			autoCompletionList.add(
@@ -225,4 +226,8 @@
     	editor.setAutoCompletionList(autoCompletionList);
     }
+	
+	public void setAutoCompletionCache(AutoCompletionCache acCache) {
+		this.acCache = acCache;
+	}
 
 	
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java	(revision 14338)
@@ -159,4 +159,8 @@
 		tblTagEditor.setAutoCompletionList(autoCompletionList);
 	}
+	
+	public void setAutoCompletionCache(AutoCompletionCache acCache) {
+		tblTagEditor.setAutoCompletionCache(acCache);
+	}
 
 	@Override
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java	(revision 14338)
@@ -457,5 +457,11 @@
 				} else {
 					TagModel tagModel = get(tag.getKey());
-					tagModel.setValue(tag.getValue());
+					// only overwrite an existing value if the preset
+					// proposes a value. I.e. don't overwrite
+					// existing values for tag 'name' with an empty string
+					//
+					if (tag.getValue() != null) {
+						tagModel.setValue(tag.getValue());
+					}
 				}
 			}
@@ -491,5 +497,5 @@
 	}
 
-	public void removeAppliedItem(Item item) {
+	public void removeAppliedPreset(Item item) {
 		if (item == null) {
 			return; 
@@ -520,4 +526,9 @@
 	}
 	
+	public void clearAppliedPresets() {
+		appliedPresets.removeAllElements();
+		fireTableDataChanged();
+	}
+	
 	public void highlightCurrentPreset() {
 		fireTableDataChanged();
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java	(revision 14337)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java	(revision 14338)
@@ -29,4 +29,5 @@
 import javax.swing.table.TableModel;
 
+import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionCache;
 import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionList;
 
@@ -402,4 +403,14 @@
 	}
 	
+	public void setAutoCompletionCache(AutoCompletionCache acCache) {
+		if (acCache == null) {
+			logger.warning("argument acCache should not be null. Aborting.");
+			return; 
+		}
+		if (editor != null) {
+			editor.setAutoCompletionCache(acCache);
+		}
+	}
+	
 	public AutoCompletionList getAutoCompletionList() {
 		if (editor != null) {
