Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1267)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1268)
@@ -19,4 +19,5 @@
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.lang.String;
 import java.util.Collection;
 import java.util.Collections;
@@ -208,10 +209,10 @@
         }
 
-        String value = values.getEditor().getItem().toString();
+        String value = values.getEditor().getItem().toString().trim();
         // is not Java 1.5
         //value = java.text.Normalizer.normalize(value, java.text.Normalizer.Form.NFC);
         if (value.equals(""))
             value = null; // delete the key
-        String newkey = keys.getEditor().getItem().toString();
+        String newkey = keys.getEditor().getItem().toString().trim();
         //newkey = java.text.Normalizer.normalize(newkey, java.text.Normalizer.Form.NFC);
         if (newkey.equals("")) {
@@ -259,4 +260,13 @@
         selectionChanged(sel); // update whole table
         Main.parent.repaint(); // repaint all - drawing could have been changed
+
+        if(!key.equals(newkey)) {
+            for(int i=0; i < propertyTable.getRowCount(); i++)
+                if(propertyData.getValueAt(i, 0).toString() == newkey) {
+                    row=i;
+                    break;
+                }
+        }
+        propertyTable.changeSelection(row, 0, false, false);
     }
 
@@ -326,6 +336,6 @@
         if (!Integer.valueOf(JOptionPane.OK_OPTION).equals(pane.getValue()))
             return;
-        String key = keys.getEditor().getItem().toString();
-        String value = values.getEditor().getItem().toString();
+        String key = keys.getEditor().getItem().toString().trim();
+        String value = values.getEditor().getItem().toString().trim();
         if (value.equals(""))
             return;
@@ -392,4 +402,7 @@
         Main.ds.fireSelectionChanged(sel);
         selectionChanged(sel); // update table
+          
+        int rowCount = propertyTable.getRowCount();
+        propertyTable.changeSelection((row < rowCount ? row : (rowCount-1)), 0, false, false);
     }
 
@@ -703,4 +716,4 @@
         }
 
-	}
+    }
 }
