Index: trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 838)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 839)
@@ -130,26 +130,20 @@
 		{
 			HashMap<TaggingPresetMenu,JMenu> submenus = new HashMap<TaggingPresetMenu,JMenu>();
-			for (final TaggingPreset p : taggingPresets) {
-				String name = (String) p.getValue(Action.NAME);
-				if (p instanceof TaggingPresetSeperator) {
-					if(p.group != null)
-						submenus.get(p.group).add(new JSeparator());
-					else
-						Main.main.menu.presetsMenu.add(new JSeparator());
-				}
+			for (final TaggingPreset p : taggingPresets)
+			{
+				JMenu m = p.group != null ? submenus.get(p.group) : Main.main.menu.presetsMenu;
+				if (p instanceof TaggingPresetSeperator)
+					m.add(new JSeparator());
 				else if (p instanceof TaggingPresetMenu)
 				{
 					JMenu submenu = new JMenu(p);
 					submenus.put((TaggingPresetMenu)p, submenu);
-					Main.main.menu.presetsMenu.add(submenu);
-				} else {
-					if(p.group != null)
-					{
-						JMenuItem m = new JMenuItem(p);
-						m.setText(tr(p.name));
-						submenus.get(p.group).add(m);
-					}
-					else
-						Main.main.menu.presetsMenu.add(new JMenuItem(p));
+					m.add(submenu);
+				}
+				else
+				{
+					JMenuItem mi = new JMenuItem(p);
+					mi.setText(tr(p.name));
+					m.add(mi);
 				}
 			}
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 838)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 839)
@@ -340,20 +340,18 @@
 	 */
 	public void setDisplayName() {
-		if(group == null)
-		{
-			putValue(Action.NAME, tr(name));
-			String tooltip = tr("Use preset ''{0}''", tr(name));
-			putValue(SHORT_DESCRIPTION, "<html>"+tooltip+"</html>");
-			putValue("toolbar", "tagging_" + name);
-		}
-		else
-		{
-			putValue(Action.NAME, tr(group.name) + "/" + tr(name));
-			String tooltip = tr("Use preset ''{0}'' of group ''{1}''", tr(name), tr(group.name));
-			putValue(SHORT_DESCRIPTION, "<html>"+tooltip+"</html>");
-			putValue("toolbar", "tagging_" + group.name + "/" + name);
-		}
-	}
-
+		putValue(Action.NAME, getName());
+		putValue("toolbar", "tagging_" + getRawName());
+		putValue(SHORT_DESCRIPTION, "<html>"+ group != null ?
+		tr("Use preset ''{0}'' of group ''{1}''", tr(name), group.getName()) :
+		tr("Use preset ''{0}''", tr(name))
+		+"</html>");
+	}
+
+	public String getName() {
+		return group != null ? group.getName() + "/" + tr(name) : tr(name);
+	}
+	public String getRawName() {
+		return group != null ? group.getRawName() + "/" + name : name;
+	}
 	/**
 	 * Called from the XML parser to set the icon
@@ -413,8 +411,9 @@
 				TaggingPresetMenu tp = (TaggingPresetMenu) o;
 				if(tp == lastmenu)
-					lastmenu = null;
+					lastmenu = tp.group;
 				else
 				{
 					tp.setDisplayName();
+					tp.group = lastmenu;
 					lastmenu = tp;
 					all.add(tp);
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java	(revision 838)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java	(revision 839)
@@ -10,8 +10,8 @@
 public class TaggingPresetMenu extends TaggingPreset {
 	public void setDisplayName() {
-		putValue(Action.NAME, tr(name));
-		String tooltip = tr("Preset group ''{0}''", tr(name));
-		putValue(SHORT_DESCRIPTION, "<html>"+tooltip+"</html>");
-		putValue("toolbar", "tagginggroup_" + name);
+		String n = getName();
+		putValue(Action.NAME, n);
+		putValue(SHORT_DESCRIPTION, "<html>"+tr("Preset group ''{0}''", n)+"</html>");
+		putValue("toolbar", "tagginggroup_" + getRawName());
 	}
 	public void setIcon(String iconName) {
