Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8064)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 8065)
@@ -166,4 +166,5 @@
     private ImageryBounds bounds = null;
     private List<String> serverProjections;
+    private String description;
     private String attributionText;
     private String attributionLinkURL;
@@ -200,4 +201,5 @@
         @pref String projections;
         @pref String icon;
+        @pref String description;
 
         /**
@@ -229,4 +231,5 @@
             cookies = i.cookies;
             icon = i.icon;
+            description = i.description;
             if (i.bounds != null) {
                 bounds = i.bounds.encodeAsString(",");
@@ -332,4 +335,5 @@
         id = e.id;
         url = e.url;
+        description = e.description;
         cookies = e.cookies;
         eulaAcceptanceRequired = e.eula;
@@ -389,4 +393,5 @@
         this.countryCode = i.countryCode;
         this.icon = i.icon;
+        this.description = i.description;
     }
 
@@ -472,7 +477,9 @@
             return false;
         }
+        if (!Objects.equals(this.description, other.description)) {
+            return false;
+        }
         return true;
     }
-
 
     @Override
@@ -774,4 +781,35 @@
 
     /**
+     * Returns the description text when existing.
+     * @return The description
+     * @since 8064
+     */
+    public String getDescription() {
+        return this.description;
+    }
+
+    /**
+     * Sets the description text when existing.
+     * @param description the imagery description text
+     * @since 8064
+     */
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * Returns a tool tip text for display.
+     * @return The text
+     * @since 8064
+     */
+    public String getToolTipText() {
+        String desc = getDescription();
+        if (desc != null && !desc.isEmpty()) {
+            return "<html>" + getName() + "<br>" + desc + "</html>";
+        }
+        return getName();
+    }
+
+    /**
      * Returns the EULA acceptance URL, if any.
      * @return The URL to an EULA text that has to be accepted before use, or {@code null}
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 8064)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 8065)
@@ -184,6 +184,5 @@
      * Gets a server URL in the preferences dialog. Used by plugins.
      *
-     * @param server
-     *            The server name
+     * @param server The server name
      * @return The server URL
      */
@@ -228,9 +227,13 @@
         private final ImageryLayerInfo layerInfo;
 
-        private static class ImageryTableCellRenderer extends DefaultTableCellRenderer {
+        /**
+         * class to render the URL information of Imagery source
+         * @since 8064
+         */
+        private static class ImageryURLTableCellRenderer extends DefaultTableCellRenderer {
 
             private List<ImageryInfo> layers;
 
-            public ImageryTableCellRenderer(List<ImageryInfo> layers) {
+            public ImageryURLTableCellRenderer(List<ImageryInfo> layers) {
                 this.layers = layers;
             }
@@ -255,5 +258,26 @@
                         }
                     }
-                }
+                    label.setToolTipText((String)value);
+                }
+                return label;
+            }
+        }
+
+        /**
+         * class to render the name information of Imagery source
+         * @since 8064
+         */
+        private static class ImageryNameTableCellRenderer extends DefaultTableCellRenderer {
+            @Override
+            public Component getTableCellRendererComponent(JTable table, Object value, boolean
+                    isSelected, boolean hasFocus, int row, int column) {
+                ImageryInfo info = (ImageryInfo) value;
+                JLabel label = (JLabel) super.getTableCellRendererComponent(
+                        table, info.getName(), isSelected, hasFocus, row, column);
+                label.setBackground(Main.pref.getUIColor("Table.background"));
+                if (isSelected) {
+                    label.setForeground(Main.pref.getUIColor("Table.foreground"));
+                }
+                label.setToolTipText(info.getToolTipText());
                 return label;
             }
@@ -281,11 +305,5 @@
 
             defaultModel = new ImageryDefaultLayerTableModel();
-            defaultTable = new JTable(defaultModel) {
-                @Override
-                public String getToolTipText(MouseEvent e) {
-                    java.awt.Point p = e.getPoint();
-                    return (String) defaultModel.getValueAt(rowAtPoint(p), columnAtPoint(p));
-                }
-            };
+            defaultTable = new JTable(defaultModel);
 
             defaultModel.addTableModelListener(
@@ -309,11 +327,12 @@
             TableColumnModel mod = defaultTable.getColumnModel();
             mod.getColumn(2).setPreferredWidth(800);
-            mod.getColumn(2).setCellRenderer(new ImageryTableCellRenderer(layerInfo.getLayers()));
+            mod.getColumn(2).setCellRenderer(new ImageryURLTableCellRenderer(layerInfo.getLayers()));
             mod.getColumn(1).setPreferredWidth(400);
+            mod.getColumn(1).setCellRenderer(new ImageryNameTableCellRenderer());
             mod.getColumn(0).setPreferredWidth(50);
 
             mod = activeTable.getColumnModel();
             mod.getColumn(1).setPreferredWidth(800);
-            mod.getColumn(1).setCellRenderer(new ImageryTableCellRenderer(layerInfo.getDefaultLayers()));
+            mod.getColumn(1).setCellRenderer(new ImageryURLTableCellRenderer(layerInfo.getDefaultLayers()));
             mod.getColumn(0).setPreferredWidth(200);
 
@@ -726,5 +745,5 @@
                     return info.getCountryCode();
                 case 1:
-                    return info.getName();
+                    return info;
                 case 2:
                     return info.getExtendedUrl();
Index: /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 8064)
+++ /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 8065)
@@ -117,4 +117,5 @@
                         "id",
                         "type",
+                        "description",
                         "default",
                         "url",
@@ -206,5 +207,10 @@
                 switch(qName) {
                 case "name":
+                    /* TODO: don't ignore lang attribute */
                     entry.setTranslatedName(accumulator.toString());
+                    break;
+                case "description":
+                    /* TODO: don't ignore lang attribute */
+                    entry.setDescription(accumulator.toString());
                     break;
                 case "id":
