Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1762)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 1763)
@@ -105,18 +105,21 @@
             if (e.getClickCount() < 2)
             {
-                if (e.getSource() == propertyTable)
+                if (e.getSource() == propertyTable) {
                     membershipTable.clearSelection();
-                else if (e.getSource() == membershipTable)
+                } else if (e.getSource() == membershipTable) {
                     propertyTable.clearSelection();
+                }
             }
             else if (e.getSource() == propertyTable)
             {
                 int row = propertyTable.rowAtPoint(e.getPoint());
-                if (row > -1)
+                if (row > -1) {
                     propertyEdit(row);
+                }
             } else if (e.getSource() == membershipTable) {
                 int row = membershipTable.rowAtPoint(e.getPoint());
-                if (row > -1)
+                if (row > -1) {
                     membershipEdit(row);
+                }
             }
             else
@@ -140,6 +143,6 @@
 
         String msg = "<html>"+trn("This will change up to {0} object.",
-        "This will change up to {0} objects.", sel.size(), sel.size())
-        +"<br><br>("+tr("An empty value deletes the key.", key)+")</html>";
+                "This will change up to {0} objects.", sel.size(), sel.size())
+                +"<br><br>("+tr("An empty value deletes the key.", key)+")</html>";
 
         JPanel panel = new JPanel(new BorderLayout());
@@ -163,17 +166,17 @@
         values.setRenderer(new DefaultListCellRenderer() {
             @Override public Component getListCellRendererComponent(JList list,
-            Object value, int index, boolean isSelected,  boolean cellHasFocus){
+                    Object value, int index, boolean isSelected,  boolean cellHasFocus){
                 Component c = super.getListCellRendererComponent(list, value,
-                index, isSelected, cellHasFocus);
+                        index, isSelected, cellHasFocus);
                 if (c instanceof JLabel) {
                     String str = null;
-                        str=(String) value;
-                        if (valueCount.containsKey(objKey)){
-                            Map<String, Integer> m=valueCount.get(objKey);
-                            if (m.containsKey(str)) {
-                                str+="("+m.get(str)+")";
-                                c.setFont(c.getFont().deriveFont(Font.ITALIC+Font.BOLD));
-                            }
+                    str=(String) value;
+                    if (valueCount.containsKey(objKey)){
+                        Map<String, Integer> m=valueCount.get(objKey);
+                        if (m.containsKey(str)) {
+                            str+="("+m.get(str)+")";
+                            c.setFont(c.getFont().deriveFont(Font.ITALIC+Font.BOLD));
                         }
+                    }
                     ((JLabel)c).setText(str);
                 }
@@ -220,6 +223,7 @@
         // is not Java 1.5
         //value = java.text.Normalizer.normalize(value, java.text.Normalizer.Form.NFC);
-        if (value.equals(""))
+        if (value.equals("")) {
             value = null; // delete the key
+        }
         String newkey = keys.getEditor().getItem().toString().trim();
         //newkey = java.text.Normalizer.normalize(newkey, java.text.Normalizer.Form.NFC);
@@ -228,7 +232,7 @@
             value = null; // delete the key instead
         }
-        if (key.equals(newkey) || value == null)
+        if (key.equals(newkey) || value == null) {
             Main.main.undoRedo.add(new ChangePropertyCommand(sel, newkey, value));
-        else {
+        } else {
             Collection<Command> commands=new Vector<Command>();
             commands.add(new ChangePropertyCommand(sel, key, null));
@@ -258,7 +262,7 @@
             }
             Main.main.undoRedo.add(new SequenceCommand(
-            trn("Change properties of up to {0} object",
-            "Change properties of up to {0} objects", sel.size(), sel.size()),
-            commands));
+                    trn("Change properties of up to {0} object",
+                            "Change properties of up to {0} objects", sel.size(), sel.size()),
+                            commands));
         }
 
@@ -283,5 +287,5 @@
      */
     private void updateListData(String key, final TreeMap<String, TreeSet<String>> allData,
-    final AutoCompleteComboBox values) {
+            final AutoCompleteComboBox values) {
         Collection<String> newItems;
         if (allData.containsKey(key)) {
@@ -300,5 +304,7 @@
      */
     void membershipEdit(int row) {
-        RelationEditor.getEditor((Relation)membershipData.getValueAt(row, 0),
+        Relation relation = (Relation)membershipData.getValueAt(row, 0);
+        Main.main.map.relationListDialog.selectRelation(relation);
+        RelationEditor.getEditor(relation,
                 (Collection<RelationMember>) membershipData.getValueAt(row, 1) ).setVisible(true);
     }
@@ -314,6 +320,6 @@
         JPanel p = new JPanel(new BorderLayout());
         p.add(new JLabel("<html>"+trn("This will change up to {0} object.",
-        "This will change up to {0} objects.", sel.size(),sel.size())
-        +"<br><br>"+tr("Please select a key")), BorderLayout.NORTH);
+                "This will change up to {0} objects.", sel.size(),sel.size())
+                +"<br><br>"+tr("Please select a key")), BorderLayout.NORTH);
         final TreeMap<String, TreeSet<String>> allData = createAutoCompletionInfo(false);
         final AutoCompleteComboBox keys = new AutoCompleteComboBox();
@@ -356,8 +362,8 @@
      */
     private void addFocusAdapter(final int row, final TreeMap<String, TreeSet<String>> allData,
-    final AutoCompleteComboBox keys, final AutoCompleteComboBox values) {
+            final AutoCompleteComboBox keys, final AutoCompleteComboBox values) {
         // get the combo box' editor component
         JTextComponent editor = (JTextComponent)values.getEditor()
-                .getEditorComponent();
+        .getEditorComponent();
         // Refresh the values model when focus is gained
         editor.addFocusListener(new FocusAdapter() {
@@ -377,7 +383,7 @@
             for (String key : osm.keySet()) {
                 TreeSet<String> values = null;
-                if (allData.containsKey(key))
+                if (allData.containsKey(key)) {
                     values = allData.get(key);
-                else {
+                } else {
                     values = new TreeSet<String>();
                     allData.put(key, values);
@@ -387,6 +393,7 @@
         }
         if (!edit) {
-            for (int i = 0; i < propertyData.getRowCount(); ++i)
+            for (int i = 0; i < propertyData.getRowCount(); ++i) {
                 allData.remove(propertyData.getValueAt(i, 0));
+            }
         }
         return allData;
@@ -449,5 +456,5 @@
 
     private final JLabel selectSth = new JLabel("<html><p>"
-    + tr("Please select the objects you want to change properties for.") + "</p></html>");
+            + tr("Please select the objects you want to change properties for.") + "</p></html>");
 
     /**
@@ -456,6 +463,6 @@
     public PropertiesDialog(MapFrame mapFrame) {
         super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."),
-        Shortcut.registerShortcut("subwindow:properties", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
-        Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
+                Shortcut.registerShortcut("subwindow:properties", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
+                        Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
 
         // setting up the properties table
@@ -465,5 +472,5 @@
         propertyTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer(){
             @Override public Component getTableCellRendererComponent(JTable table, Object value,
-            boolean isSelected, boolean hasFocus, int row, int column) {
+                    boolean isSelected, boolean hasFocus, int row, int column) {
                 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
                 if (c instanceof JLabel) {
@@ -472,5 +479,5 @@
                     case 0:
                         str = (String) value;
-                    break;
+                        break;
                     case 1:
                         Map<String, Integer> v = (Map<String,Integer>) value;
@@ -481,5 +488,5 @@
                             str=v.entrySet().iterator().next().getKey();
                         }
-                    break;
+                        break;
                     }
                     ((JLabel)c).setText(str);
@@ -496,5 +503,5 @@
         membershipTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer() {
             @Override public Component getTableCellRendererComponent(JTable table, Object value,
-            boolean isSelected, boolean hasFocus, int row, int column) {
+                    boolean isSelected, boolean hasFocus, int row, int column) {
                 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
                 if (c instanceof JLabel) {
@@ -508,5 +515,5 @@
         membershipTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer() {
             @Override public Component getTableCellRendererComponent(JTable table, Object value,
-            boolean isSelected, boolean hasFocus, int row, int column) {
+                    boolean isSelected, boolean hasFocus, int row, int column) {
                 Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
                 if (c instanceof JLabel) {
@@ -554,11 +561,11 @@
             public void actionPerformed(ActionEvent e) {
                 int row = membershipTable.getSelectedRow();
-                if (e.getActionCommand().equals("Add"))
+                if (e.getActionCommand().equals("Add")) {
                     add();
-                else if(row >= 0)
+                } else if(row >= 0)
                 {
-                    if (e.getActionCommand().equals("Edit"))
+                    if (e.getActionCommand().equals("Edit")) {
                         membershipEdit(row);
-                    else if (e.getActionCommand().equals("Delete")) {
+                    } else if (e.getActionCommand().equals("Delete")) {
                         Relation cur = (Relation)membershipData.getValueAt(row, 0);
                         NameVisitor n = new NameVisitor();
@@ -566,8 +573,8 @@
 
                         int result = new ExtendedDialog(Main.parent,
-                            tr("Change relation"),
-                            tr("Really delete selection from relation {0}?", n.name),
-                            new String[] {tr("Delete from relation"), tr("Cancel")},
-                            new String[] {"dialogs/delete.png", "cancel.png"}).getValue();
+                                tr("Change relation"),
+                                tr("Really delete selection from relation {0}?", n.name),
+                                new String[] {tr("Delete from relation"), tr("Cancel")},
+                                new String[] {"dialogs/delete.png", "cancel.png"}).getValue();
 
                         if(result == 1)
@@ -599,8 +606,9 @@
                     // Although we might edit/delete the wrong tag here, chances are still better
                     // than just displaying an error message (which always "fails").
-                    if (e.getActionCommand().equals("Edit"))
+                    if (e.getActionCommand().equals("Edit")) {
                         propertyEdit(sel >= 0 ? sel : 0);
-                    else if (e.getActionCommand().equals("Delete"))
+                    } else if (e.getActionCommand().equals("Delete")) {
                         delete(sel >= 0 ? sel : 0);
+                    }
                 }
             }
@@ -608,5 +616,5 @@
 
         Shortcut s = Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B,
-        Shortcut.GROUP_MNEMONIC);
+                Shortcut.GROUP_MNEMONIC);
         this.btnAdd = new SideButton(marktr("Add"),"add","Properties",
                 tr("Add a new key/value pair to all objects"), s, buttonAction);
@@ -614,5 +622,5 @@
 
         s = Shortcut.registerShortcut("properties:edit", tr("Edit Properties"), KeyEvent.VK_I,
-        Shortcut.GROUP_MNEMONIC);
+                Shortcut.GROUP_MNEMONIC);
         this.btnEdit = new SideButton(marktr("Edit"),"edit","Properties",
                 tr("Edit the value of the selected key for all objects"), s, buttonAction);
@@ -620,5 +628,5 @@
 
         s = Shortcut.registerShortcut("properties:delete", tr("Delete Properties"), KeyEvent.VK_Q,
-        Shortcut.GROUP_MNEMONIC);
+                Shortcut.GROUP_MNEMONIC);
         this.btnDel = new SideButton(marktr("Delete"),"delete","Properties",
                 tr("Delete the selected key in all objects"), s, buttonAction);
@@ -631,6 +639,7 @@
     @Override public void setVisible(boolean b) {
         super.setVisible(b);
-        if (b)
+        if (b) {
             selectionChanged(Main.ds.getSelected());
+        }
     }
 
@@ -677,26 +686,30 @@
         for(TaggingPreset t : TaggingPresetPreference.taggingPresets) {
             if(t.types == null || !((relations > 0 && !t.types.contains("relation")) &&
-            (nodes > 0 && !t.types.contains("node")) &&
-            (ways+closedways > 0 && !t.types.contains("way")) &&
-            (closedways > 0 && !t.types.contains("closedway"))))
+                    (nodes > 0 && !t.types.contains("node")) &&
+                    (ways+closedways > 0 && !t.types.contains("way")) &&
+                    (closedways > 0 && !t.types.contains("closedway"))))
             {
                 int found = 0;
                 for(TaggingPreset.Item i : t.data) {
-                    if(!(i instanceof TaggingPreset.Key))
+                    if(!(i instanceof TaggingPreset.Key)) {
                         continue;
+                    }
                     String val = ((TaggingPreset.Key)i).value;
                     String key = ((TaggingPreset.Key)i).key;
                     // we subtract 100 if not found and add 1 if found
                     found -= 100;
-                    if(!valueCount.containsKey(key))
+                    if(!valueCount.containsKey(key)) {
                         continue;
+                    }
 
                     Map<String, Integer> v = valueCount.get(key);
-                    if(v.size() == 1 && v.containsKey(val) && v.get(val) == total)
+                    if(v.size() == 1 && v.containsKey(val) && v.get(val) == total) {
                         found += 101;
-                }
-
-                if(found <= 0)
+                    }
+                }
+
+                if(found <= 0) {
                     continue;
+                }
 
                 JLabel lbl = new JLabel(t.getName());
@@ -713,6 +726,7 @@
             presets.setMaximumSize(size);
             presets.setMinimumSize(size);
-        } else
+        } else {
             presets.setVisible(false);
+        }
     }
 
@@ -722,6 +736,7 @@
         if (propertyTable == null)
             return; // selection changed may be received in base class constructor before init
-        if (propertyTable.getCellEditor() != null)
+        if (propertyTable.getCellEditor() != null) {
             propertyTable.getCellEditor().cancelCellEditing();
+        }
 
         // re-load property data
@@ -735,8 +750,13 @@
         valueCount.clear();
         for (OsmPrimitive osm : newSelection) {
-            if(osm instanceof Node) ++nodes;
-            else if(osm instanceof Relation) ++relations;
-            else if(((Way)osm).isClosed()) ++closedways;
-            else ++ways;
+            if(osm instanceof Node) {
+                ++nodes;
+            } else if(osm instanceof Relation) {
+                ++relations;
+            } else if(((Way)osm).isClosed()) {
+                ++closedways;
+            } else {
+                ++ways;
+            }
             for (Entry<String, String> e : osm.entrySet()) {
                 keyCount.put(e.getKey(), keyCount.containsKey(e.getKey()) ? keyCount.get(e.getKey())+1 : 1);
@@ -802,10 +822,13 @@
         propertyTable.getTableHeader().setVisible(hasSelection);
         selectSth.setVisible(!hasSelection);
-        if(hasTags) propertyTable.changeSelection(0, 0, false, false);
-        else if(hasMemberships) membershipTable.changeSelection(0, 0, false, false);
+        if(hasTags) {
+            propertyTable.changeSelection(0, 0, false, false);
+        } else if(hasMemberships) {
+            membershipTable.changeSelection(0, 0, false, false);
+        }
 
         if(propertyData.getRowCount() != 0 || membershipData.getRowCount() != 0) {
             setTitle(tr("Properties: {0} / Memberships: {1}",
-                propertyData.getRowCount(), membershipData.getRowCount()), true);
+                    propertyData.getRowCount(), membershipData.getRowCount()), true);
         } else {
             setTitle(tr("Properties / Memberships"), false);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1762)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1763)
@@ -76,11 +76,12 @@
     public RelationListDialog() {
         super(tr("Relations"), "relationlist", tr("Open a list of all relations."),
-        Shortcut.registerShortcut("subwindow:relations", tr("Toggle: {0}", tr("Relations")), KeyEvent.VK_R, Shortcut.GROUP_LAYER), 150);
+                Shortcut.registerShortcut("subwindow:relations", tr("Toggle: {0}", tr("Relations")), KeyEvent.VK_R, Shortcut.GROUP_LAYER), 150);
         displaylist.setCellRenderer(new OsmPrimitivRenderer());
         displaylist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         displaylist.addMouseListener(new MouseAdapter(){
             @Override public void mouseClicked(MouseEvent e) {
-                if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1)
+                if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
                     Main.ds.setSelected((Relation)displaylist.getSelectedValue());
+                }
             }
         });
@@ -105,6 +106,6 @@
         displaylist.addListSelectionListener(new ListSelectionListener() {
             public void valueChanged(ListSelectionEvent e) {
-               sbEdit.setEnabled(getSelected() != null);
-               sbDel.setEnabled(getSelected() != null);
+                sbEdit.setEnabled(getSelected() != null);
+                sbDel.setEnabled(getSelected() != null);
             }
         });
@@ -113,5 +114,7 @@
     @Override public void setVisible(boolean b) {
         super.setVisible(b);
-        if (b) updateList();
+        if (b) {
+            updateList();
+        }
     }
 
@@ -120,6 +123,7 @@
         int i = 0;
         for (OsmPrimitive e : DataSet.sort(Main.ds.relations)) {
-            if (!e.deleted && !e.incomplete)
+            if (!e.deleted && !e.incomplete) {
                 list.setElementAt(e, i++);
+            }
         }
         list.setSize(i);
@@ -137,5 +141,7 @@
     public void activeLayerChange(Layer a, Layer b) {
         if ((a == null || a instanceof OsmDataLayer) && b instanceof OsmDataLayer) {
-            if (a != null) ((OsmDataLayer)a).listenerDataChanged.remove(this);
+            if (a != null) {
+                ((OsmDataLayer)a).listenerDataChanged.remove(this);
+            }
             ((OsmDataLayer)b).listenerDataChanged.add(this);
             updateList();
@@ -190,7 +196,27 @@
      */
     private Relation getSelected() {
-        if(list.size() == 1)
+        if(list.size() == 1) {
             displaylist.setSelectedIndex(0);
+        }
         return (Relation) displaylist.getSelectedValue();
     }
+
+    /**
+     * Selects the relation <code>relation</code> in the list of relations.
+     * 
+     * @param relation  the relation
+     */
+    public void selectRelation(Relation relation) {
+        if (relation == null) return;
+        int i = -1;
+        for (i=0; i < list.getSize(); i++) {
+            Relation r = (Relation)list.get(i);
+            if (r == relation) {
+                break;
+            }
+        }
+        if (i >= 0 && i < list.getSize()) {
+            displaylist.setSelectedIndex(i);
+        }
+    }
 }
