Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 7442)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 7444)
@@ -23,11 +23,14 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.dialogs.DialogsPanel.Action;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
-public final class ImageViewerDialog extends ToggleDialog {
+public final class ImageViewerDialog extends ToggleDialog implements LayerChangeListener {
 
     private static final String COMMAND_ZOOM = "zoom";
@@ -87,4 +90,5 @@
         btnPrevious.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scPrev.getKeyStroke(), APREVIOUS);
         btnPrevious.getActionMap().put(APREVIOUS, prevAction);
+        btnPrevious.setEnabled(false);
 
         final String DELETE_TEXT = tr("Remove photo from layer");
@@ -117,4 +121,5 @@
         btnNext.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scNext.getKeyStroke(), ANEXT);
         btnNext.getActionMap().put(ANEXT, nextAction);
+        btnNext.setEnabled(false);
 
         Main.registerActionShortcut(
@@ -167,4 +172,12 @@
 
         add(content, BorderLayout.CENTER);
+
+        MapView.addLayerChangeListener(this);
+    }
+
+    @Override
+    public void destroy() {
+        MapView.removeLayerChangeListener(this);
+        super.destroy();
     }
 
@@ -218,10 +231,25 @@
     public static void showImage(GeoImageLayer layer, ImageEntry entry) {
         getInstance().displayImage(layer, entry);
-        layer.checkPreviousNextButtons();
-    }
-    public static void setPreviousEnabled(Boolean value) {
+        if (layer != null) {
+            layer.checkPreviousNextButtons();
+        } else {
+            setPreviousEnabled(false);
+            setNextEnabled(false);
+        }
+    }
+
+    /**
+     * Enables (or disables) the "Previous" button.
+     * @param value {@code true} to enable the button, {@code false} otherwise
+     */
+    public static void setPreviousEnabled(boolean value) {
         getInstance().btnPrevious.setEnabled(value);
     }
-    public static void setNextEnabled(Boolean value) {
+
+    /**
+     * Enables (or disables) the "Next" button.
+     * @param value {@code true} to enable the button, {@code false} otherwise
+     */
+    public static void setNextEnabled(boolean value) {
         getInstance().btnNext.setEnabled(value);
     }
@@ -285,5 +313,4 @@
             }
         }
-
     }
 
@@ -334,3 +361,21 @@
         return getInstance().currentLayer;
     }
+
+    @Override
+    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+        // Ignored
+    }
+
+    @Override
+    public void layerAdded(Layer newLayer) {
+        // Ignored
+    }
+
+    @Override
+    public void layerRemoved(Layer oldLayer) {
+        // Clear current image and layer if current layer is deleted
+        if (currentLayer != null && currentLayer.equals(oldLayer)) {
+            showImage(null, null);
+        }
+    }
 }
