Index: src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
===================================================================
--- src/org/openstreetmap/gui/jmapviewer/JMapViewer.java	(revision 26642)
+++ src/org/openstreetmap/gui/jmapviewer/JMapViewer.java	(working copy)
@@ -670,6 +670,11 @@
         repaint();
     }
 
+    public void removeAllMapMarkers() {
+        mapMarkerList.clear();
+        repaint();
+    }
+
     public void addMapRectangle(MapRectangle rectangle) {
         mapRectangleList.add(rectangle);
         repaint();
@@ -680,6 +685,11 @@
         repaint();
     }
 
+    public void removeAllMapRectangles() {
+        mapRectangleList.clear();
+        repaint();
+    }
+
     public void setZoomContolsVisible(boolean visible) {
         zoomSlider.setVisible(visible);
         zoomInButton.setVisible(visible);
Index: src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
===================================================================
--- src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java	(revision 0)
+++ src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java	(revision 0)
@@ -0,0 +1,60 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
+import org.openstreetmap.josm.data.Bounds;
+
+/**
+ * @author Vincent
+ *
+ */
+public class MapRectangleImpl implements MapRectangle {
+
+    private Coordinate topLeft;
+    private Coordinate bottomRight;
+    Color color;
+
+    public MapRectangleImpl(Bounds bounds) {
+        this(bounds, Color.BLUE);
+    }
+
+    public MapRectangleImpl(Bounds bounds, Color color) {
+        this.topLeft = new Coordinate(bounds.getMax().lat(), bounds.getMin().lon());
+        this.bottomRight = new Coordinate(bounds.getMin().lat(), bounds.getMax().lon());
+        this.color = color;
+    }
+
+    /* (non-Javadoc)
+     * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getTopLeft()
+     */
+    @Override
+    public Coordinate getTopLeft() {
+        return topLeft;
+    }
+
+    /* (non-Javadoc)
+     * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getBottomRight()
+     */
+    @Override
+    public Coordinate getBottomRight() {
+        return bottomRight;
+    }
+
+    /* (non-Javadoc)
+     * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#paint(java.awt.Graphics, java.awt.Point, java.awt.Point)
+     */
+    @Override
+    public void paint(Graphics g, Point topLeft, Point bottomRight) {
+        g.setColor(color);
+        g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
+    }
+
+    @Override
+    public String toString() {
+        return "MapRectangle from " + topLeft + " to " + bottomRight;
+    }
+}
Index: src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(revision 4415)
+++ src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(working copy)
@@ -17,8 +17,10 @@
 import java.io.IOException;
 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;
 import javax.swing.BorderFactory;
@@ -47,7 +49,11 @@
 import javax.swing.table.DefaultTableModel;
 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;
 import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
@@ -76,12 +82,12 @@
     private Color colFadeColor;
     private JButton btnFadeColor;
     private JSlider fadeAmount = new JSlider(0, 100);
-    private JComboBox sharpen;
+    private JComboBox<String> sharpen;
     private JCheckBox useOffsetServer;
     private JTextField offsetServerUrl;
 
     // WMS Settings
-    private JComboBox browser;
+    private JComboBox<String> browser;
     JCheckBox overlapCheckBox;
     JSpinner spinEast;
     JSpinner spinNorth;
@@ -126,7 +132,7 @@
         p.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
         p.add(this.fadeAmount, GBC.eol().fill(GBC.HORIZONTAL));
 
-        this.sharpen = new JComboBox(new String[] {
+        this.sharpen = new JComboBox<String>(new String[] {
                 tr("None"),
                 tr("Soft"),
                 tr("Strong")});
@@ -150,7 +156,7 @@
 
     private JPanel buildWMSSettingsPanel() {
         final JPanel p = new JPanel(new GridBagLayout());
-        browser = new JComboBox(new String[] {
+        browser = new JComboBox<String>(new String[] {
                 "webkit-image {0}",
                 "gnome-web-photo --mode=photo --format=png {0} /dev/stdout",
                 "gnome-web-photo-fixed {0}",
@@ -363,6 +369,7 @@
         private final ImageryLayerInfo layerInfo;
         private JTable listActive;
         final JTable listdef;
+        final JMapViewer map;
         final PreferenceTabbedPane gui;
 
         public ImageryProvidersPanel(final PreferenceTabbedPane gui, ImageryLayerInfo layerInfo) {
@@ -406,6 +413,14 @@
             scrolldef.setPreferredSize(new Dimension(200, 200));
             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);
             tb.setBorderPainted(false);
@@ -428,7 +443,7 @@
 
             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));
 
             JToolBar sideButtonTB = new JToolBar(JToolBar.VERTICAL);
@@ -442,6 +457,49 @@
 
         }
 
+        // 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();
+                    }
+                }
+            }
+        }
+
         class NewEntryAction extends AbstractAction {
             public NewEntryAction() {
                 putValue(NAME, tr("New"));
