Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromClipboardAction.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromClipboardAction.java	(revision 20217)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromClipboardAction.java	(revision 22549)
@@ -51,5 +51,5 @@
 		// Add layer only if successfully initialized
 		try {
-			layer.Initialize();
+			layer.initialize();
 		}
 		catch (IOException e) {
Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromFileAction.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromFileAction.java	(revision 20217)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/NewLayerFromFileAction.java	(revision 22549)
@@ -91,5 +91,5 @@
 			// Add layer only if successfully initialized
 			try {
-				layer.Initialize();
+				layer.initialize();
 			}
 			catch (IOException e) {
Index: applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerAbstract.java
===================================================================
--- applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerAbstract.java	(revision 20217)
+++ applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerAbstract.java	(revision 22549)
@@ -29,13 +29,15 @@
 import java.awt.Image;
 import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
+import java.util.List;
 import java.util.Properties;
 
+import javax.swing.AbstractAction;
+import javax.swing.Action;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
 import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JSeparator;
 
 import org.openstreetmap.josm.Main;
@@ -69,6 +71,4 @@
     // The scale that was set on the map during image creation
     private double m_initial_scale = 0;
-    // Popup menu items
-    private Component m_popupmenu[] = null;
     // Layer icon
     private Icon m_layericon = null;
@@ -93,20 +93,4 @@
         m_counter++;
 
-        // Create popup menu
-        // Reset submenu
-        JMenu reset_submenu = new JMenu(tr("Reset"));
-        reset_submenu.add( new ResetPictureAllAction( this ) );
-        reset_submenu.addSeparator();
-        reset_submenu.add( new ResetPicturePositionAction( this ) );
-        reset_submenu.add( new ResetPictureAngleAction( this ) );
-        reset_submenu.add( new ResetPictureScaleAction( this ) );
-        // Main menu
-        m_popupmenu = new Component[]{
-                reset_submenu,
-                new JSeparator(),
-                new JMenuItem( new SavePictureCalibrationAction(this)),
-                new JMenuItem( new LoadPictureCalibrationAction(this)),
-        };
-
         // Load layer icon
         m_layericon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(PicLayerAbstract.class.getResource("/images/layericon.png")));
@@ -117,5 +101,5 @@
      * initial parameters. Throws exception if something fails.
      */
-    public void Initialize() throws IOException {
+    public void initialize() throws IOException {
 
         // Create image
@@ -165,6 +149,12 @@
 
     @Override
-    public Component[] getMenuEntries() {
-        return m_popupmenu;
+    public Action[] getMenuEntries() {
+        // Main menu
+        return new Action[] {
+                new ResetSubmenuAction(),
+                SeparatorLayerAction.INSTANCE,
+                new SavePictureCalibrationAction(this),
+                new LoadPictureCalibrationAction(this),
+        };
     }
 
@@ -189,5 +179,5 @@
     public void paint(Graphics2D g2, MapView mv, Bounds bounds) {
 
-        if ( m_image != null && g2 instanceof Graphics2D) {
+        if ( m_image != null) {
 
             // Position image at the right graphical place
@@ -320,3 +310,28 @@
             Main.map.mapView.repaint();
     }
+
+    private class ResetSubmenuAction extends AbstractAction implements LayerAction {
+
+    	public ResetSubmenuAction() {
+    		super(tr("Reset"));
+		}
+
+		public void actionPerformed(ActionEvent e) {
+		}
+
+		public Component createMenuComponent() {
+			JMenu reset_submenu = new JMenu(this);
+	        reset_submenu.add( new ResetPictureAllAction( PicLayerAbstract.this ) );
+	        reset_submenu.addSeparator();
+	        reset_submenu.add( new ResetPicturePositionAction( PicLayerAbstract.this ) );
+	        reset_submenu.add( new ResetPictureAngleAction( PicLayerAbstract.this ) );
+	        reset_submenu.add( new ResetPictureScaleAction( PicLayerAbstract.this ) );
+	        return reset_submenu;
+		}
+
+		public boolean supportLayers(List<Layer> layers) {
+			return layers.size() == 1 && layers.get(0) instanceof PicLayerAbstract;
+		}
+
+    }
 }
