Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 32364)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 32365)
@@ -1,7 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.mapillary;
-
-import static org.openstreetmap.josm.tools.I18n.marktr;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.AlphaComposite;
@@ -43,6 +40,4 @@
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 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.NavigatableComponent;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -50,4 +45,6 @@
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
+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.mapillary.cache.CacheUtils;
@@ -63,4 +60,7 @@
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 /**
  * This class represents the layer shown in JOSM. There can only exist one
@@ -71,5 +71,5 @@
  */
 public final class MapillaryLayer extends AbstractModifiableLayer implements
-    DataSetListener, EditLayerChangeListener, LayerChangeListener {
+    DataSetListener, ActiveLayerChangeListener {
 
   /** Maximum distance for the red/blue lines. */
@@ -108,7 +108,6 @@
     if (Main.main != null && Main.map.mapView != null) {
       setMode(new SelectMode());
-      Main.map.mapView.addLayer(this);
-      MapView.addEditLayerChangeListener(this, false);
-      MapView.addLayerChangeListener(this);
+      Main.getLayerManager().addLayer(this);
+      Main.getLayerManager().addActiveLayerChangeListener(this, false);
       if (Main.getLayerManager().getEditLayer() != null)
         Main.getLayerManager().getEditLayer().data.addDataSetListener(this);
@@ -222,5 +221,5 @@
     Main.map.mapView.removeMouseListener(this.mode);
     Main.map.mapView.removeMouseMotionListener(this.mode);
-    MapView.removeEditLayerChangeListener(this);
+    Main.getLayerManager().removeActiveLayerChangeListener(this);
     if (Main.getLayerManager().getEditLayer() != null)
       Main.getLayerManager().getEditLayer().data.removeDataSetListener(this);
@@ -498,9 +497,17 @@
 
   @Override
-  public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
-    if (oldLayer == null && newLayer != null) {
-      newLayer.data.addDataSetListener(this);
-    } else if (oldLayer != null && newLayer == null) {
-      oldLayer.data.removeDataSetListener(this);
+  public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+    if (Main.getLayerManager().getActiveLayer() == this) {
+      MapillaryUtils.updateHelpText();
+    }
+    MapillaryPlugin.setMenuEnabled(MapillaryPlugin.getJoinMenu(), Main.getLayerManager().getActiveLayer() == this);
+
+    if (Main.getLayerManager().getEditLayer() != e.getPreviousEditLayer()) {
+      if (Main.getLayerManager().getEditLayer() != null) {
+        Main.getLayerManager().getEditLayer().data.addDataSetListener(this);
+      }
+      if (e.getPreviousEditLayer() != null) {
+        e.getPreviousEditLayer().data.removeDataSetListener(this);
+      }
     }
   }
@@ -550,23 +557,4 @@
   @Override
   public void visitBoundingBox(BoundingXYVisitor v) {
-  }
-
-  @Override
-  public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-    if (newLayer == this) {
-      MapillaryUtils.updateHelpText();
-      MapillaryPlugin.setMenuEnabled(MapillaryPlugin.getJoinMenu(), true);
-    } else
-      MapillaryPlugin.setMenuEnabled(MapillaryPlugin.getJoinMenu(), false);
-  }
-
-  @Override
-  public void layerAdded(Layer newLayer) {
-    // Do nothing, we're only interested in layer change, not addition
-  }
-
-  @Override
-  public void layerRemoved(Layer oldLayer) {
-    // Do nothing, we're only interested in layer change, not removal
   }
 
