Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 3291)
@@ -30,4 +30,5 @@
     private boolean fillConnectionNode;
     private Color selectedColor;
+    private Color relationSelectedColor;
     private Color highlightColor;
     private Color inactiveColor;
@@ -49,4 +50,5 @@
 
         selectedColor = PaintColors.SELECTED.get();
+        relationSelectedColor = PaintColors.RELATIONSELECTED.get();
         highlightColor = PaintColors.HIGHLIGHT.get();
         inactiveColor = PaintColors.INACTIVE.get();
@@ -100,4 +102,8 @@
     public Color getSelectedColor() {
         return selectedColor;
+    }
+
+    public Color getRelationSelectedColor() {
+        return relationSelectedColor;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3291)
@@ -129,5 +129,6 @@
 
         if (isZoomOk(nodeStyle)) {
-            nodeStyle.paintPrimitive(n, paintSettings, painter, n.isSelected());
+            nodeStyle.paintPrimitive(n, paintSettings, painter, n.isSelected(),
+            false);
         }
     }
@@ -178,5 +179,5 @@
 
         if(wayStyle instanceof LineElemStyle) {
-            wayStyle.paintPrimitive(w, paintSettings, painter, data.isSelected(w));
+            wayStyle.paintPrimitive(w, paintSettings, painter, data.isSelected(w), false);
         } else if (wayStyle instanceof AreaElemStyle) {
             AreaElemStyle areaStyle = (AreaElemStyle) wayStyle;
@@ -189,5 +190,5 @@
                 }
             }
-            areaStyle.getLineStyle().paintPrimitive(w, paintSettings, painter, data.isSelected(w));
+            areaStyle.getLineStyle().paintPrimitive(w, paintSettings, painter, data.isSelected(w), false);
         }
     }
@@ -201,10 +202,10 @@
                 Way way = (Way)osm;
                 AreaElemStyle areaStyle = (AreaElemStyle)style;
-                areaStyle.getLineStyle().paintPrimitive(way, paintSettings, painter, true);
+                areaStyle.getLineStyle().paintPrimitive(way, paintSettings, painter, true, true);
                 if(area) {
-                    painter.drawArea(getPolygon(way), (areaselected ? paintSettings.getSelectedColor() : areaStyle.color), painter.getAreaName(way));
+                    painter.drawArea(getPolygon(way), (areaselected ? paintSettings.getRelationSelectedColor() : areaStyle.color), painter.getAreaName(way));
                 }
             } else {
-                style.paintPrimitive(osm, paintSettings, painter, true);
+                style.paintPrimitive(osm, paintSettings, painter, true, true);
             }
         }
@@ -212,5 +213,5 @@
         {
             if(isZoomOk(style)) {
-                style.paintPrimitive(osm, paintSettings, painter, true);
+                style.paintPrimitive(osm, paintSettings, painter, true, true);
             }
         }
@@ -497,5 +498,6 @@
 
                     boolean selected = pd.selected || data.isSelected(r);
-                    painter.drawArea(p, selected ? paintSettings.getSelectedColor() : areaStyle.color, painter.getAreaName(r));
+                    painter.drawArea(p, selected ? paintSettings.getRelationSelectedColor()
+                    : areaStyle.color, painter.getAreaName(r));
                     visible = true;
                 }
@@ -514,5 +516,5 @@
                     if(zoomok && (wInner.mappaintDrawnCode != paintid || multipolygon.getOuterWays().isEmpty())) {
                         ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wInner, paintSettings, painter, (data.isSelected(wInner)
-                                || data.isSelected(r)));
+                                || data.isSelected(r)), r.isSelected());
                     }
                     wInner.mappaintDrawnCode = paintid;
@@ -546,5 +548,5 @@
                     if(zoomok)
                     {
-                        ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wOuter, paintSettings, painter, (data.isSelected(wOuter) || data.isSelected(r)));
+                        ((AreaElemStyle)wayStyle).getLineStyle().paintPrimitive(wOuter, paintSettings, painter, (data.isSelected(wOuter) || data.isSelected(r)), r.isSelected());
                     }
                     wOuter.mappaintDrawnCode = paintid;
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3291)
@@ -39,4 +39,5 @@
     private final Color textColor;
     private final Color selectedColor;
+    private final Color relationSelectedColor;
     private final Color areaTextColor;
     private final Color nodeColor;
@@ -64,4 +65,5 @@
         this.textColor = PaintColors.TEXT.get();
         this.selectedColor = PaintColors.SELECTED.get();
+        this.relationSelectedColor = PaintColors.RELATIONSELECTED.get();
         this.areaTextColor = PaintColors.AREA_TEXT.get();
         this.nodeColor = PaintColors.NODE.get();
@@ -181,5 +183,5 @@
     }
 
-    public void drawNodeIcon(Node n, ImageIcon icon, boolean selected, String name) {
+    public void drawNodeIcon(Node n, ImageIcon icon, boolean selected, boolean member, String name) {
         Point p = nc.getPoint(n);
         if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
@@ -200,5 +202,5 @@
         if (selected)
         {
-            g.setColor (  selectedColor );
+            g.setColor (  member ? relationSelectedColor : selectedColor );
             g.drawRect (p.x-w/2-2, p.y-h/2-2, w+4, h+4);
         }
@@ -298,5 +300,5 @@
 
         if (selected) {
-            g.setColor(selectedColor);
+            g.setColor(relationSelectedColor);
             g.drawRect((int)(pVia.x+vx+vx2)-w/2-2,(int)(pVia.y+vy+vy2)-h/2-2, w+4, h+4);
         }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java	(revision 3291)
@@ -13,4 +13,5 @@
     INACTIVE(marktr("inactive"), Color.darkGray),
     SELECTED(marktr("selected"), Color.red),
+    RELATIONSELECTED(marktr("Relation: selected"), Color.magenta),
     NODE(marktr("Node: standard"), Color.yellow),
     CONNECTION(marktr("Node: connection"), Color.yellow),
Index: trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 3291)
@@ -169,5 +169,5 @@
             name = tr("incomplete");
         } else {
-            name = relation.get("type");
+            name = tr(relation.get("type"));
             if (name == null) {
                 name = (relation.get("public_transport") != null) ? tr("public transport") : "";
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 3291)
@@ -48,5 +48,5 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected, boolean member) {
         // TODO
         /*Way way = (Way)primitive;
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java	(revision 3291)
@@ -53,4 +53,4 @@
     }
 
-    public abstract void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected);
+    public abstract void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected, boolean member);
 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java	(revision 3291)
@@ -39,11 +39,11 @@
     }
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, MapPainter painter, boolean selected) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, MapPainter painter, boolean selected, boolean member) {
         if (painter.isShowIcons()) {
             Node n = (Node) primitive;
             String name = painter.isShowNames() && annotate?painter.getNodeName(n):null;
-            painter.drawNodeIcon(n, (painter.isInactive() || n.isDisabled())?getDisabledIcon():icon, selected, name);
+            painter.drawNodeIcon(n, (painter.isInactive() || n.isDisabled())?getDisabledIcon():icon, selected, member, name);
         } else {
-            SimpleNodeElemStyle.INSTANCE.paintPrimitive(primitive, settings, painter, selected);
+            SimpleNodeElemStyle.INSTANCE.paintPrimitive(primitive, settings, painter, selected, member);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3291)
@@ -139,5 +139,5 @@
 
     @Override
-    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected) {
+    public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected, boolean member) {
         Way w = (Way)primitive;
         /* show direction arrows, if draw.segment.relevant_directions_only is not set,
@@ -180,5 +180,5 @@
             myColor = paintSettings.getHighlightColor();
         } else if (selected) {
-            myColor = paintSettings.getSelectedColor();
+            myColor = member ? paintSettings.getRelationSelectedColor() : paintSettings.getSelectedColor();
         } else if(w.isDisabled()) {
             myColor = paintSettings.getInactiveColor();
@@ -189,5 +189,5 @@
             for(LineElemStyle s : overlays) {
                 if(!s.over) {
-                    painter.drawWay(w, s.color != null && selected ? myColor: s.color, s.getWidth(myWidth),
+                    painter.drawWay(w, (s.color == null || selected) ? myColor: s.color, s.getWidth(myWidth),
                             s.getDashed(), s.dashedColor, false, false, false);
                 }
@@ -202,5 +202,5 @@
             for(LineElemStyle s : overlays) {
                 if(s.over) {
-                    painter.drawWay(w, s.color != null && selected ? myColor : s.color, s.getWidth(myWidth),
+                    painter.drawWay(w, (s.color == null || selected) ? myColor : s.color, s.getWidth(myWidth),
                             s.getDashed(), s.dashedColor, false, false, false);
                 }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java	(revision 3290)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java	(revision 3291)
@@ -23,5 +23,5 @@
     @Override
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings settings, MapPainter painter,
-            boolean selected) {
+            boolean selected, boolean member) {
         Node n = (Node)primitive;
         String name = painter.isShowNames()?painter.getNodeName(n):null;
@@ -37,5 +37,5 @@
                 color = settings.getInactiveColor();
             } else if (selected) {
-                color = settings.getSelectedColor();
+                color = member ? settings.getRelationSelectedColor() : settings.getSelectedColor();
             } else if (n.isConnectionNode()) {
                 if (n.isTagged()) {
