Index: trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 16092)
+++ trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 16096)
@@ -163,5 +163,5 @@
         removeDynamicItems();
 
-        addDynamic(offsetMenuItem, null);
+        addDynamic(offsetMenuItem);
         addDynamicSeparator();
 
@@ -195,10 +195,15 @@
                 for (Entry<ImageryCategory, List<JMenuItem>> e : dynamicNonPhotoItems.entrySet()) {
                     ImageryCategory cat = e.getKey();
-                    JMenuItem categoryMenu = new JMenu(cat.getDescription());
-                    categoryMenu.setIcon(cat.getIcon(ImageSizes.MENU));
-                    for (JMenuItem it : e.getValue()) {
-                        categoryMenu.add(it);
+                    List<JMenuItem> list = e.getValue();
+                    if (list.size() > 1) {
+                        JMenuItem categoryMenu = new JMenu(cat.getDescription());
+                        categoryMenu.setIcon(cat.getIcon(ImageSizes.MENU));
+                        for (JMenuItem it : list) {
+                            categoryMenu.add(it);
+                        }
+                        dynamicNonPhotoMenus.add(add(categoryMenu));
+                    } else if (!list.isEmpty()) {
+                        dynamicNonPhotoMenus.add(add(list.get(0)));
                     }
-                    dynamicNonPhotoMenus.add(add(categoryMenu));
                 }
             }
@@ -216,5 +221,5 @@
         } else {
             // or add the submenu itself
-            addDynamic(subMenu, null);
+            addDynamic(subMenu);
         }
     }
@@ -322,6 +327,6 @@
     }
 
-    private void addDynamic(JMenuItem it, ImageryCategory category) {
-        doAddDynamic(it, category);
+    private void addDynamic(JMenuItem it) {
+        doAddDynamic(it, null);
     }
 
