Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(revision 4415)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(revision 4416)
@@ -18,6 +18,8 @@
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import javax.swing.AbstractAction;
@@ -48,5 +50,9 @@
 import javax.swing.table.TableColumnModel;
 
+import org.openstreetmap.gui.jmapviewer.JMapViewer;
+import org.openstreetmap.gui.jmapviewer.MapRectangleImpl;
+import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
@@ -364,4 +370,5 @@
         private JTable listActive;
         final JTable listdef;
+        final JMapViewer map;
         final PreferenceTabbedPane gui;
 
@@ -407,4 +414,12 @@
             add(scrolldef, GBC.std().insets(0, 5, 0, 0).fill(GridBagConstraints.BOTH).weight(1.0, 0.6).insets(5, 0, 0, 0));
 
+            // Add default item map
+            map = new JMapViewer();
+            map.setZoomContolsVisible(false);
+            map.setPreferredSize(new Dimension(200, 200));
+            add(map, GBC.std().insets(5, 5, 0, 0).fill(GridBagConstraints.BOTH).weight(0.333, 0.6).insets(5, 0, 0, 0));
+
+            listdef.getSelectionModel().addListSelectionListener(new DefListSelectionListener());
+
             JToolBar tb = new JToolBar(JToolBar.VERTICAL);
             tb.setFloatable(false);
@@ -429,5 +444,5 @@
             add(new JLabel(tr("Selected entries:")), GBC.eol().insets(5, 0, 0, 0));
             JScrollPane scroll = new JScrollPane(listActive);
-            add(scroll, GBC.std().fill(GridBagConstraints.BOTH).weight(1.0, 0.4).insets(5, 0, 0, 5));
+            add(scroll, GBC.std().fill(GridBagConstraints.BOTH).span(GridBagConstraints.RELATIVE).weight(1.0, 0.4).insets(5, 0, 0, 5));
             scroll.setPreferredSize(new Dimension(200, 200));
 
@@ -441,4 +456,47 @@
             add(sideButtonTB, GBC.eol().anchor(GBC.NORTH).insets(0, 0, 5, 5));
 
+        }
+
+        // Listener of default providers list selection
+        private final class DefListSelectionListener implements ListSelectionListener {
+            // The current drawn rectangles
+            private final Map<Integer, MapRectangle> mapRectangles;
+
+            private DefListSelectionListener() {
+                this.mapRectangles = new HashMap<Integer, MapRectangle>();
+            }
+
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                // First index is set to -1 when the list is refreshed, so discard all map rectangles
+                if (e.getFirstIndex() == -1) {
+                    map.removeAllMapRectangles();
+                    mapRectangles.clear();
+                    // Only process complete (final) selection events
+                } else if (!e.getValueIsAdjusting()) {
+                    for (int i = e.getFirstIndex(); i<=e.getLastIndex(); i++) {
+                        Bounds bounds = modeldef.getRow(i).getBounds();
+                        if (bounds != null) {
+                            if (listdef.getSelectionModel().isSelectedIndex(i)) {
+                                if (!mapRectangles.containsKey(i)) {
+                                    // Add new map rectangle
+                                    MapRectangle rectangle = new MapRectangleImpl(bounds);
+                                    mapRectangles.put(i, rectangle);
+                                    map.addMapRectangle(rectangle);
+                                }
+                            } else if (mapRectangles.containsKey(i)) {
+                                // Remove previousliy drawn map rectangle
+                                map.removeMapRectangle(mapRectangles.get(i));
+                                mapRectangles.remove(i);
+                            }
+                        }
+                    }
+                    // If needed, adjust map to show all map rectangles
+                    if (!mapRectangles.isEmpty()) {
+                        map.setDisplayToFitMapRectangle();
+                        map.zoomOut();
+                    }
+                }
+            }
         }
 
