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 14415)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java	(revision 14416)
@@ -42,4 +42,5 @@
 	private AutoCompletionList autoCompletionList = null;
 	
+
 	/**
 	 * constructor 
@@ -128,5 +129,4 @@
 		}
 		
-		logger.info("acCache=" + acCache);
 		for (String value : acCache.getValues(forKey)) {
 			autoCompletionList.add(
@@ -182,5 +182,17 @@
 	@Override 
 	public Object getCellEditorValue() {
-		String value = "";
+		return editor.getText();
+    }
+
+	
+	
+	@Override
+	public void cancelCellEditing() {
+		super.cancelCellEditing();
+	}
+
+	@Override
+	public boolean stopCellEditing() {
+		
 		if (currentColumn == 0) {
 			currentTag.setName(editor.getText());
@@ -192,19 +204,6 @@
 			}
 		}
-	    return value;
-    }
-
-	
-	
-	@Override
-	public void cancelCellEditing() {
-		super.cancelCellEditing();
-	}
-
-	@Override
-	public boolean stopCellEditing() {
-		boolean ret = super.stopCellEditing();
-		return ret; 
-		
+	    
+		return super.stopCellEditing(); 
 	}
 
@@ -230,4 +229,5 @@
 		this.acCache = acCache;
 	}
+	
 
 	
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 14415)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java	(revision 14416)
@@ -89,8 +89,5 @@
 	@Override public Object getValueAt(int rowIndex, int columnIndex) {
 		if (rowIndex >= getRowCount()) {
-			return null; 
-		}
-		if (columnIndex >= getColumnCount()) {
-			return null;
+			throw new IndexOutOfBoundsException("unexpected rowIndex: rowIndex=" + rowIndex);
 		}
 		
@@ -104,4 +101,5 @@
 		}		
     }
+	
 	
 	/**
@@ -534,3 +532,20 @@
 		fireTableDataChanged();
 	}
+	
+	
+	public void updateTagName(TagModel tag, String newName) {
+		String oldName = tag.getName();
+		tag.setName(newName);
+		if (! newName.equals(oldName)) {
+			setDirty(true);
+		}
+	}
+	
+	public void updateTagValue(TagModel tag, String newValue) {
+		String oldValue = tag.getValue();
+		tag.setValue(newValue);
+		if (! newValue.equals(oldValue)) {
+			setDirty(true);
+		}
+	}
 }
