Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1913)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1914)
@@ -305,13 +305,14 @@
         tempG.fillRect(0, 0, getWidth(), getHeight());
 
+        Layer activeLayer = getActiveLayer();
         for (int i = layers.size()-1; i >= 0; --i) {
             Layer l = layers.get(i);
-            if (l.isVisible()/* && l != getActiveLayer()*/) {
+            if (l.isVisible() && l != getActiveLayer()) {
                 l.paint(tempG, this);
             }
         }
-
-        /*if (getActiveLayer() != null && getActiveLayer().visible)
-            getActiveLayer().paint(tempG, this);*/
+        if (activeLayer != null) {
+            activeLayer.paint(tempG, this);
+        }
 
         for (MapViewPaintable mvp : temporaryLayers) {
@@ -392,4 +393,24 @@
     public List<Layer> getAllLayersAsList() {
         return Collections.unmodifiableList(layers);
+    }
+
+    /**
+     * Replies an unmodifiable list of layers of a certain type.
+     * 
+     * Example:
+     * <pre>
+     *     List<WMSLayer> wmsLayers = getLayersOfType(WMSLayer.class);
+     * </pre>
+     * 
+     * @return an unmodifiable list of layers of a certain type.
+     */
+    public <T> List<T>  getLayersOfType(Class<T> ofType) {
+        ArrayList<T> ret = new ArrayList<T>();
+        for (Layer layer : getAllLayersAsList()) {
+            if (ofType.isInstance(layer)) {
+                ret.add(ofType.cast(layer));
+            }
+        }
+        return ret;
     }
 
