Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3821)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3822)
@@ -170,5 +170,5 @@
             if (fillAreas > dist)
             {
-                painter.drawArea(getPolygon(w), (data.isSelected(w) ? paintSettings.getSelectedColor() : areaStyle.color), painter.getAreaName(w));
+                areaStyle.paintPrimitive(w, paintSettings, painter, data.isSelected(w), false);
             }
             areaStyle.getLineStyle().paintPrimitive(w, paintSettings, painter, data.isSelected(w), false);
@@ -461,16 +461,4 @@
         if (bounds.y + bounds.height < 0) return false;
         return true;
-    }
-
-    protected Polygon getPolygon(Way w)
-    {
-        Polygon polygon = new Polygon();
-
-        for (Node n : w.getNodes())
-        {
-            Point p = nc.getPoint(n);
-            polygon.addPoint(p.x,p.y);
-        }
-        return polygon;
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3821)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3822)
@@ -251,4 +251,19 @@
     }
 
+    private Polygon getPolygon(Way w) {
+        Polygon polygon = new Polygon();
+
+        for (Node n : w.getNodes()) {
+            Point p = nc.getPoint(n);
+            polygon.addPoint(p.x,p.y);
+        }
+        return polygon;
+    }
+
+    public void drawArea(Way w, Color color, String name) {
+        Polygon polygon = getPolygon(w);
+        drawArea(polygon, color, name);
+    }
+
     protected void drawArea(Polygon polygon, Color color, String name) {
 
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 3821)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/AreaElemStyle.java	(revision 3822)
@@ -4,4 +4,6 @@
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapPainter;
@@ -51,9 +53,10 @@
     @Override
     public void paintPrimitive(OsmPrimitive primitive, MapPaintSettings paintSettings, MapPainter painter, boolean selected, boolean member) {
-        // TODO
-        /*Way way = (Way)primitive;
-        String name = painter.isShowNames() ? painter.getWayName(way) : null;
-        painter.drawArea(getPolygon(way), selected ? paintSettings.getSelectedColor() : color, name);
-        line.paintPrimitive(way, paintSettings, painter, selected);*/
+        if (primitive instanceof Way) {
+            Way w = (Way) primitive;
+            String name = painter.isShowNames() ? painter.getAreaName(w) : null;
+            painter.drawArea(w, w.isSelected() ? paintSettings.getSelectedColor() : color, name);
+            // line.paintPrimitive(way, paintSettings, painter, selected);
+        }
     }
 }
