Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java	(revision 32288)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/gui/OdDialog.java	(revision 32289)
@@ -19,11 +19,9 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.layers.OdDataLayer;
@@ -32,5 +30,5 @@
 
 @SuppressWarnings("serial")
-public class OdDialog extends ToggleDialog implements LayerChangeListener, EditLayerChangeListener {
+public class OdDialog extends ToggleDialog implements ActiveLayerChangeListener {
 
     //private final SideButton selectButton;
@@ -122,7 +120,7 @@
         createLayout(new JTree(treeModel), true, buttons);
         
-        MapView.addEditLayerChangeListener(this);
+        Main.getLayerManager().addActiveLayerChangeListener(this);
     }
-    
+
     private void disableAllButtons() {
         for (SideButton button : buttons) {
@@ -132,10 +130,6 @@
 
     @Override
-    public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
-        activeLayerChange(oldLayer, newLayer);
-    }
-
-    @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+        Layer newLayer = Main.getLayerManager().getActiveLayer();
         if (newLayer instanceof OdLayer) {
             dataLayer = ((OdLayer) newLayer).getDataLayer();
@@ -157,16 +151,7 @@
 
     @Override
-    public void layerAdded(Layer newLayer) {
-    }
-
-    @Override
-    public void layerRemoved(Layer oldLayer) {
-    }
-
-    @Override
     public void destroy() {
         super.destroy();
-        MapView.removeLayerChangeListener(this);
-        MapView.removeEditLayerChangeListener(this);
+        Main.getLayerManager().removeActiveLayerChangeListener(this);
     }
 
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 32288)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java	(revision 32289)
@@ -16,7 +16,10 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
@@ -29,5 +32,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
-public class OdDataLayer extends OsmDataLayer implements OdLayer, LayerChangeListener {
+public class OdDataLayer extends OsmDataLayer implements OdLayer, LayerChangeListener, ActiveLayerChangeListener {
 
     public OdDiffLayer diffLayer;
@@ -52,5 +55,5 @@
             }
         }
-        MapView.addLayerChangeListener(this);
+        Main.getLayerManager().addLayerChangeListener(this);
     }
     
@@ -92,5 +95,5 @@
             final OdOsmDataLayer layer = new OdOsmDataLayer(this, dataSet, getName()+"/OSM");
             addOsmLayer(layer);
-            Main.map.mapView.setActiveLayer(osmLayer);
+            Main.getLayerManager().setActiveLayer(osmLayer);
             if (oapiReq != null) {
                 OsmDownloader.downloadOapi(oapiReq);
@@ -104,6 +107,6 @@
 
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-        if (newLayer == this && this.handler != null) {
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+        if (Main.getLayerManager().getActiveLayer() == this && this.handler != null) {
             this.handler.notifyActive();
         }
@@ -111,17 +114,21 @@
 
     @Override
-    public void layerAdded(Layer newLayer) {
+    public void layerAdded(LayerAddEvent e) {
     }
 
     @Override
-    public void layerRemoved(Layer oldLayer) {
-        if (oldLayer == this) {
+    public void layerRemoving(LayerRemoveEvent e) {
+        if (e.getRemovedLayer() == this) {
             removeOsmLayer();
             removeDiffLayer();
-        } else if (oldLayer == osmLayer) {
+        } else if (e.getRemovedLayer() == osmLayer) {
             osmLayer = null;
-        } else if (oldLayer == diffLayer) {
+        } else if (e.getRemovedLayer() == diffLayer) {
             diffLayer = null;
         }
+    }
+
+    @Override
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
     }
 
@@ -174,5 +181,5 @@
         final OdDiffLayer layer = new OdDiffLayer(this, getName()+"/Diff");
         addDiffLayer(layer);
-        Main.map.mapView.setActiveLayer(diffLayer);
+        Main.getLayerManager().setActiveLayer(diffLayer);
     }
 }
