--- trunk\src\org\openstreetmap\josm\gui\dialogs\PropertiesDialog.java.orig	2009-01-11 11:16:42.000000000 +0100
+++ trunk\src\org\openstreetmap\josm\gui\dialogs\PropertiesDialog.java	2009-01-11 14:56:39.390625000 +0100
@@ -18,6 +18,7 @@
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.lang.String;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -207,12 +208,12 @@
             return;
         }
 
-        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("")) {
             newkey = key;
@@ -258,6 +259,15 @@
         Main.ds.fireSelectionChanged(sel);
         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);
     }
 
     /**
@@ -325,8 +335,8 @@
         pane.createDialog(Main.parent, tr("Change values?")).setVisible(true);
         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;
         if (key.equals("created_by"))
@@ -391,6 +401,9 @@
         Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, null));
         Main.ds.fireSelectionChanged(sel);
         selectionChanged(sel); // update table
+          
+        int nextRow = row < propertyTable.getRowCount() ? row : propertyTable.getRowCount()-1;
+        propertyTable.changeSelection(nextRow, 0, false, false);
     }
 
     /**
@@ -702,5 +715,5 @@
             setTitle(tr("Properties / Memberships"), false);
         }
 
-	}
+    }
 }
