Index: trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 13830)
+++ trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 13832)
@@ -27,4 +27,5 @@
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
+import javax.swing.InputMap;
 import javax.swing.JButton;
 import javax.swing.JCheckBoxMenuItem;
@@ -222,7 +223,10 @@
         splitPane.setUI(new NoBorderSplitPaneUI());
 
-        // JSplitPane supports F6 and F8 shortcuts by default, but we need them for Audio actions
-        splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), new Object());
-        splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0), new Object());
+        // JSplitPane supports F6, F8, Home and End shortcuts by default, but we need them for Audio and Image Mapping actions
+        InputMap splitInputMap = splitPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+        splitInputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0), new Object());
+        splitInputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0), new Object());
+        splitInputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0), new Object());
+        splitInputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_END, 0), new Object());
 
         add(splitPane, BorderLayout.CENTER);
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 13830)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 13832)
@@ -75,6 +75,8 @@
     }
 
+    private JButton btnLast;
     private JButton btnNext;
     private JButton btnPrevious;
+    private JButton btnFirst;
     private JButton btnCollapse;
     private JToggleButton tbCentre;
@@ -88,4 +90,11 @@
     }
 
+    private static JButton createNavigationButton(JosmAction action, Dimension buttonDim) {
+        JButton btn = new JButton(action);
+        btn.setPreferredSize(buttonDim);
+        btn.setEnabled(false);
+        return btn;
+    }
+
     private void build() {
         JPanel content = new JPanel(new BorderLayout());
@@ -95,7 +104,6 @@
         Dimension buttonDim = new Dimension(26, 26);
 
-        btnPrevious = new JButton(imagePreviousAction);
-        btnPrevious.setPreferredSize(buttonDim);
-        btnPrevious.setEnabled(false);
+        btnFirst = createNavigationButton(imageFirstAction, buttonDim);
+        btnPrevious = createNavigationButton(imagePreviousAction, buttonDim);
 
         JButton btnDelete = new JButton(imageRemoveAction);
@@ -108,7 +116,6 @@
         btnCopyPath.setPreferredSize(buttonDim);
 
-        btnNext = new JButton(imageNextAction);
-        btnNext.setPreferredSize(buttonDim);
-        btnNext.setEnabled(false);
+        btnNext = createNavigationButton(imageNextAction, buttonDim);
+        btnLast = createNavigationButton(imageLastAction, buttonDim);
 
         tbCentre = new JToggleButton(imageCenterViewAction);
@@ -123,6 +130,8 @@
 
         JPanel buttons = new JPanel();
+        buttons.add(btnFirst);
         buttons.add(btnPrevious);
         buttons.add(btnNext);
+        buttons.add(btnLast);
         buttons.add(Box.createRigidArea(new Dimension(7, 0)));
         buttons.add(tbCentre);
@@ -204,5 +213,5 @@
     private class ImageFirstAction extends JosmAction {
         ImageFirstAction() {
-            super(null, (ImageProvider) null, null, Shortcut.registerShortcut(
+            super(null, new ImageProvider("dialogs", "first"), tr("First"), Shortcut.registerShortcut(
                     "geoimage:first", tr("Geoimage: {0}", tr("Show first Image")), KeyEvent.VK_HOME, Shortcut.DIRECT),
                   false, null, false);
@@ -219,5 +228,5 @@
     private class ImageLastAction extends JosmAction {
         ImageLastAction() {
-            super(null, (ImageProvider) null, null, Shortcut.registerShortcut(
+            super(null, new ImageProvider("dialogs", "last"), tr("Last"), Shortcut.registerShortcut(
                     "geoimage:last", tr("Geoimage: {0}", tr("Show last Image")), KeyEvent.VK_END, Shortcut.DIRECT),
                   false, null, false);
@@ -319,4 +328,9 @@
     }
 
+    /**
+     * Displays image for the given layer.
+     * @param layer geo image layer
+     * @param entry image entry
+     */
     public static void showImage(GeoImageLayer layer, ImageEntry entry) {
         getInstance().displayImage(layer, entry);
@@ -334,4 +348,5 @@
      */
     public static void setPreviousEnabled(boolean value) {
+        getInstance().btnFirst.setEnabled(value);
         getInstance().btnPrevious.setEnabled(value);
     }
@@ -343,4 +358,5 @@
     public static void setNextEnabled(boolean value) {
         getInstance().btnNext.setEnabled(value);
+        getInstance().btnLast.setEnabled(value);
     }
 
@@ -361,4 +377,9 @@
     private transient ImageEntry currentEntry;
 
+    /**
+     * Displays image for the given layer.
+     * @param layer geo image layer
+     * @param entry image entry
+     */
     public void displayImage(GeoImageLayer layer, ImageEntry entry) {
         boolean imageChanged;
