Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java	(revision 29653)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java	(revision 29657)
@@ -19,4 +19,5 @@
 import static org.openstreetmap.josm.tools.I18n.marktr;
 
+import java.awt.Image;
 import java.awt.Toolkit;
 import java.awt.event.KeyEvent;
@@ -28,4 +29,5 @@
 import java.util.Map;
 
+import javax.swing.ImageIcon;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
@@ -129,4 +131,5 @@
         				if ((endMenu = catMenus.get(cat)) == null) {
         					catMenus.put(cat, endMenu = new JMenu(cat.getName()));
+        					setMenuItemIcon(cat.getIcon(), endMenu);
         					moduleMenu.add(endMenu);
         				}
@@ -139,6 +142,7 @@
         				handlerName = handler.getClass().getName();
         			}
+        			JMenuItem handlerItem = null;
         			if (handler.getDataURL() != null) {
-        				endMenu.add(new DownloadDataAction(handlerName, handler.getDataURL()));
+        			    handlerItem = endMenu.add(new DownloadDataAction(handlerName, handler.getDataURL()));
         			} else if (handler.getDataURLs() != null) {
         				JMenu handlerMenu = new JMenu(handlerName);
@@ -151,6 +155,9 @@
         				if (item != null) {
         					MenuScroller.setScrollerFor(handlerMenu, (screenHeight / item.getPreferredSize().height)-3);
-        					endMenu.add(handlerMenu);
+        					handlerItem = endMenu.add(handlerMenu);
         				}
+        			}
+        			if (handlerItem != null) {
+        			    setMenuItemIcon(handler.getMenuIcon(), handlerItem);
         			}
         		}
@@ -164,4 +171,13 @@
         /*JMenuItem itemIcon =*/ MainMenu.add(menu, new OpenPreferencesActions());
         //MenuScroller.setScrollerFor(menu, screenHeight / itemIcon.getPreferredSize().height);
+	}
+	
+	private void setMenuItemIcon(ImageIcon icon, JMenuItem menuItem) {
+        if (icon != null) {
+            if (icon.getIconHeight() != 16 || icon.getIconWidth() != 16) { 
+                icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, Image.SCALE_DEFAULT));
+            }
+            menuItem.setIcon(icon);
+        }
 	}
 
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 29653)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 29657)
@@ -23,4 +23,6 @@
 import java.util.List;
 import java.util.regex.Pattern;
+
+import javax.swing.ImageIcon;
 
 import org.openstreetmap.josm.actions.JosmAction;
@@ -44,4 +46,5 @@
 import org.openstreetmap.josm.plugins.opendata.core.licenses.License;
 import org.openstreetmap.josm.plugins.opendata.core.util.NamesFrUtils;
+import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -85,4 +88,5 @@
 	private String sourceDate;
 	private File associatedFile;
+	private ImageIcon menuIcon;
 
 	public AbstractDataSetHandler() {
@@ -397,5 +401,17 @@
 				fileNameWithoutExtension+"."+MAPCSS_EXT);
 	}
-		
+	
+    public final ImageIcon getMenuIcon() {
+        return menuIcon;
+    }
+
+    public final void setMenuIcon(ImageIcon icon) {
+        this.menuIcon = icon;
+    }
+
+    public final void setMenuIcon(String iconName) {
+        setMenuIcon(OdUtils.getImageIcon(iconName));
+    }
+
 	public final void setAssociatedFile(File associatedFile) {
 		this.associatedFile = associatedFile;
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 29653)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 29657)
@@ -16,4 +16,12 @@
 package org.openstreetmap.josm.plugins.opendata.core.datasets;
 
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaQueryType.NODE;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaQueryType.RELATION;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaQueryType.WAY;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaRecurseType.NODE_RELATION;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaRecurseType.RELATION_WAY;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaRecurseType.WAY_NODE;
+import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaRecurseType.WAY_RELATION;
+
 import java.util.ArrayList;
 import java.util.Collection;
@@ -24,8 +32,6 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi;
-
-import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaQueryType.*;
-import static org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi.OaRecurseType.*;
 
 public abstract class SimpleDataSetHandler extends AbstractDataSetHandler {
@@ -45,4 +51,12 @@
 		addRelevantTag(relevantTag);
 		this.relevantUnion = false;
+        Tag tag;
+		String[] kv = relevantTag.split("=");
+		if (kv != null && kv.length == 2) {
+	        tag = new Tag(kv[0], kv[1]);
+		} else {
+		    tag = new Tag(relevantTag);
+		}
+		setMenuIcon(MapPaintStyles.getNodeIcon(tag));
 	}
 	
