Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java	(revision 32329)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java	(revision 32495)
@@ -21,7 +21,11 @@
 package org.openstreetmap.josm.plugins.piclayer;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.swing.JOptionPane;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -30,7 +34,11 @@
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
-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.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
@@ -48,10 +56,9 @@
 import org.openstreetmap.josm.plugins.piclayer.actions.transform.affine.TransformPointAction;
 import org.openstreetmap.josm.plugins.piclayer.layer.PicLayerAbstract;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
  * Main Plugin class.
  */
-public class PicLayerPlugin extends Plugin implements LayerChangeListener {
+public class PicLayerPlugin extends Plugin implements LayerChangeListener, ActiveLayerChangeListener {
 
     public static List<IconToggleButton> buttonList = null;
@@ -71,7 +78,8 @@
         MainMenu.add(Main.main.menu.imagerySubMenu, newLayerFromFileAction);
         MainMenu.add(Main.main.menu.imagerySubMenu, newLayerFromClipboardAction);
-        layerRemoved(null); // update enabled status
+        updateEnabledState();
         // Listen to layers
-        MapView.addLayerChangeListener(this);
+        Main.getLayerManager().addLayerChangeListener(this);
+        Main.getLayerManager().addActiveLayerChangeListener(this);
     }
 
@@ -122,15 +130,22 @@
      */
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+        Layer oldLayer = e.getPreviousActiveLayer();
+        Layer newLayer = Main.getLayerManager().getActiveLayer();
         boolean oldPic = oldLayer instanceof PicLayerAbstract;
         boolean newPic = newLayer instanceof PicLayerAbstract;
 
         if (oldPic) {
-            ((PicLayerAbstract)oldLayer).setDrawPoints(false);
+            ((PicLayerAbstract) oldLayer).setDrawPoints(false);
         }
 
         if (newPic) {
-            ((PicLayerAbstract)newLayer).setDrawPoints(true);
+            ((PicLayerAbstract) newLayer).setDrawPoints(true);
         }
+    }
+
+    @Override
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
+        // Do nothing
     }
 
@@ -141,5 +156,5 @@
      */
     @Override
-    public void layerAdded(Layer arg0) {
+    public void layerAdded(LayerAddEvent e) {
         newLayerFromFileAction.setEnabled(true);
         newLayerFromClipboardAction.setEnabled(true);
@@ -150,15 +165,19 @@
      */
     @Override
-    public void layerRemoved(Layer arg0) {
-        if (arg0 instanceof PicLayerAbstract && ((PicLayerAbstract) arg0).getTransformer().isModified()) {
+    public void layerRemoving(LayerRemoveEvent e) {
+        if (e.getRemovedLayer() instanceof PicLayerAbstract && ((PicLayerAbstract) e.getRemovedLayer()).getTransformer().isModified()) {
             if (JOptionPane.showConfirmDialog(Main.parent, tr("Do you want to save current calibration of layer {0}?",
-                    ((PicLayerAbstract)arg0).getPicLayerName()),
+                    ((PicLayerAbstract) e.getRemovedLayer()).getPicLayerName()),
                     tr("Select an option"),
                     JOptionPane.YES_NO_OPTION) == 0)
-                new SavePictureCalibrationAction((PicLayerAbstract) arg0).actionPerformed(null);
+                new SavePictureCalibrationAction((PicLayerAbstract) e.getRemovedLayer()).actionPerformed(null);
         }
+        updateEnabledState();
+    }
+
+    private void updateEnabledState() {
         boolean enable = !Main.getLayerManager().getLayers().isEmpty();
         newLayerFromFileAction.setEnabled(enable);
         newLayerFromClipboardAction.setEnabled(enable);
     }
-};
+}
Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromClipboardAction.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromClipboardAction.java	(revision 32329)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromClipboardAction.java	(revision 32495)
@@ -64,5 +64,5 @@
         }
         // Add layer
-        Main.main.addLayer( layer );
+        Main.getLayerManager().addLayer( layer );
     }
 }
Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java	(revision 32329)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java	(revision 32495)
@@ -121,5 +121,5 @@
             int newLayerPos = Main.getLayerManager().getLayers().size();
             for(Layer l : Main.getLayerManager().getLayersOfType(PicLayerAbstract.class)) {
-                int pos = Main.map.mapView.getLayerPos(l);
+                int pos = Main.getLayerManager().getLayers().indexOf(l);
                 if (pos < newLayerPos) newLayerPos = pos;
             }
@@ -165,5 +165,5 @@
         // Add layer only if successfully initialized
 
-        Main.main.addLayer( layer );
+        Main.getLayerManager().addLayer(layer);
         Main.map.mapView.moveLayer(layer, newLayerPos++);
 
Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java	(revision 32329)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java	(revision 32495)
@@ -260,5 +260,5 @@
 
             // Draw additional rectangle for the active pic layer
-            if ( mv.getActiveLayer() == this ) {
+            if (mv.getLayerManager().getActiveLayer() == this) {
                 g.setColor( new Color( 0xFF0000 ) );
                 g.drawRect(
