Index: trunk/src/org/openstreetmap/josm/gui/download/IDownloadSourceType.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/IDownloadSourceType.java	(revision 16914)
+++ trunk/src/org/openstreetmap/josm/gui/download/IDownloadSourceType.java	(revision 16915)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.download;
 
+import javax.swing.Icon;
 import javax.swing.JCheckBox;
 import javax.swing.event.ChangeListener;
@@ -34,4 +35,12 @@
 
     /**
+     * Returns the icon to be added to the UI.
+     * @return The icon to be added to the UI
+     */
+    default Icon getIcon() {
+        return null;
+    }
+
+    /**
      * Returns the download task class which will be getting the data.
      * @return The {@link DownloadTask} class which will be getting the data
Index: trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java	(revision 16914)
+++ trunk/src/org/openstreetmap/josm/gui/download/OSMDownloadSource.java	(revision 16915)
@@ -18,4 +18,5 @@
 import java.util.concurrent.Future;
 
+import javax.swing.Box;
 import javax.swing.Icon;
 import javax.swing.JCheckBox;
@@ -232,6 +233,12 @@
             downloadSourcesPanel.removeAll();
             downloadSourcesPanel.add(new JLabel(tr(DATA_SOURCES_AND_TYPES)));
-            DOWNLOAD_SOURCES
-                .forEach(obj -> downloadSourcesPanel.add(obj.getCheckBox(checkboxChangeListener)));
+            DOWNLOAD_SOURCES.forEach(obj -> {
+                final Icon icon = obj.getIcon();
+                if (icon != null) {
+                    downloadSourcesPanel.add(Box.createHorizontalStrut(6));
+                    downloadSourcesPanel.add(new JLabel(icon));
+                }
+                downloadSourcesPanel.add(obj.getCheckBox(checkboxChangeListener));
+            });
         }
 
@@ -424,4 +431,9 @@
 
         @Override
+        public Icon getIcon() {
+            return ImageProvider.get("layer/osmdata_small", ImageProvider.ImageSizes.SMALLICON);
+        }
+
+        @Override
         public Class<? extends AbstractDownloadTask<DataSet>> getDownloadClass() {
             return DownloadOsmTask.class;
@@ -459,4 +471,9 @@
 
         @Override
+        public Icon getIcon() {
+            return ImageProvider.get("layer/gpx_small", ImageProvider.ImageSizes.SMALLICON);
+        }
+
+        @Override
         public Class<? extends AbstractDownloadTask<GpxData>> getDownloadClass() {
             return DownloadGpsTask.class;
@@ -492,4 +509,9 @@
 
         @Override
+        public Icon getIcon() {
+            return ImageProvider.get("layer/marker_small", ImageProvider.ImageSizes.SMALLICON);
+        }
+
+        @Override
         public Class<? extends AbstractDownloadTask<NoteData>> getDownloadClass() {
             return DownloadNotesTask.class;
