Index: trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java	(revision 4305)
+++ trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java	(revision 4306)
@@ -337,5 +337,5 @@
         TileSource source = getTileSource(info);
         if (source == null)
-            throw new IllegalStateException("cannot create TMSLayer with non-TMS ImageryInfo");
+            throw new IllegalStateException("Cannot create TMSLayer with non-TMS ImageryInfo");
         initTileSource(source);
 
@@ -379,5 +379,5 @@
             public void actionPerformed(ActionEvent ae) {
                 if (clickedTile != null) {
-                    loadTile(clickedTile);
+                    loadTile(clickedTile, true);
                     redraw();
                 }
@@ -413,4 +413,13 @@
             public void actionPerformed(ActionEvent ae) {
                 loadAllTiles(true);
+                redraw();
+            }
+        }));
+
+        tileOptionMenu.add(new JMenuItem(new AbstractAction(
+                tr("Load All Error Tiles")) {
+            @Override
+            public void actionPerformed(ActionEvent ae) {
+                loadAllErrorTiles(true);
                 redraw();
             }
@@ -644,11 +653,9 @@
     }
 
-    synchronized boolean loadTile(Tile tile)
+    synchronized boolean loadTile(Tile tile, boolean force)
     {
         if (tile == null)
             return false;
-        if (tile.hasError())
-            return false;
-        if (tile.isLoaded())
+        if (!force && (tile.hasError() || tile.isLoaded()))
             return false;
         if (tile.isLoading())
@@ -672,8 +679,18 @@
         // load all tiles!
         if (ts.tooLarge()) {
-            System.out.println("Not downloading all tiles because there is more than 18 tiles on an axis!");
+            Main.warn("Not downloading all tiles because there is more than 18 tiles on an axis!");
             return;
         }
         ts.loadAllTiles(force);
+    }
+
+    void loadAllErrorTiles(boolean force) {
+        MapView mv = Main.map.mapView;
+        EastNorth topLeft = mv.getEastNorth(0, 0);
+        EastNorth botRight = mv.getEastNorth(mv.getWidth(), mv.getHeight());
+
+        TileSet ts = new TileSet(topLeft, botRight, currentZoomLevel);
+
+        ts.loadAllErrorTiles(force);
     }
 
@@ -1014,17 +1031,20 @@
         void loadAllTiles(boolean force)
         {
-            List<Tile> tiles = this.allTiles(true);
             if (!autoLoad && !force)
                 return;
-            int nr_queued = 0;
-            for (Tile t : tiles) {
-                if (loadTile(t)) {
-                    nr_queued++;
+            for (Tile t : this.allTiles(true)) {
+                loadTile(t, false);
+            }
+        }
+
+        void loadAllErrorTiles(boolean force)
+        {
+            if (!autoLoad && !force)
+                return;
+            for (Tile t : this.allTiles(true)) {
+                if (t.hasError()) {
+                    loadTile(t, true);
                 }
             }
-            /*if (debug)
-                if (nr_queued > 0) {
-                    Main.debug("queued to load: " + nr_queued + "/" + tiles.size() + " tiles at zoom: " + zoom);
-                }*/
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 4305)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 4306)
@@ -802,5 +802,5 @@
                         String toolbar = (String) tb;
                         Action r = actions.get(toolbar);
-                        if(r != null &&  r != action) {
+                        if(r != null && r != action && !toolbar.startsWith("imagery_")) {
                             System.out.println(tr("Toolbar action {0} overwritten: {1} gets {2}",
                             toolbar, r.getClass().getName(), action.getClass().getName()));
