Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 6035)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 6036)
@@ -8,4 +8,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -24,4 +27,6 @@
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.ZoomToAction;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.MapView;
@@ -31,4 +36,5 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.util.HighlightHelper;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 
@@ -37,4 +43,5 @@
     /** the additional actions in popup menu */
     private ZoomToGapAction zoomToGap;
+    private HighlightHelper highlightHelper = new HighlightHelper();
 
     /**
@@ -66,4 +73,6 @@
                 KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "selectNextColumnCell");
 
+        initHighlighting();
+        
         // install custom navigation actions
         //
@@ -89,5 +98,5 @@
         return menu;
     }
-
+    
     @Override
     public Dimension getPreferredSize(){
@@ -104,6 +113,30 @@
     }
 
+    @Override
     public void makeMemberVisible(int index) {
         scrollRectToVisible(getCellRect(index, 0, true));
+    }
+
+    private void initHighlighting() {
+        getMemberTableModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent lse) {
+                if (Main.isDisplayingMapView()) {
+                    Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
+                    ArrayList<OsmPrimitive> toHighlight = new ArrayList<OsmPrimitive>();
+                    for (RelationMember r: sel) {
+                        if (r.getMember().isUsable()) {
+                            toHighlight.add(r.getMember());
+                        }
+                    }
+                    if (highlightHelper.highlightOnly(toHighlight)) {
+                        Main.map.mapView.repaint();
+                    }
+                }
+            }});
+        if (Main.isDisplayingMapView()) {
+            HighlightHelper.clearAllHighlighted();
+            Main.map.mapView.repaint();
+        }
     }
 
@@ -145,4 +178,5 @@
     private class SelectPreviousColumnCellAction extends AbstractAction {
 
+        @Override
         public void actionPerformed(ActionEvent e) {
             int col = getSelectedColumn();
@@ -166,4 +200,5 @@
         super.unlinkAsListener();
         MapView.removeLayerChangeListener(zoomToGap);
+        highlightHelper.clear();
     }
 
