Index: /trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 693)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 694)
@@ -135,5 +135,17 @@
 					String[] sp = name.split("/");
 					if (sp.length <= 1) {
-						Main.main.menu.presetsMenu.add(new JMenuItem(p));
+						if(p.isEmpty())
+						{
+							JMenu submenu = submenus.get(sp[0]);
+							if (submenu == null) {
+								submenu = new JMenu(p);
+								submenus.put(sp[0], submenu);
+								Main.main.menu.presetsMenu.add(submenu);
+							}
+						}
+						else
+						{
+							Main.main.menu.presetsMenu.add(new JMenuItem(p));
+						}
 					} else {
 						p.setDisplayName(sp[1]);
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 693)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 694)
@@ -14,4 +14,5 @@
 import java.awt.event.ActionListener;
 import java.util.HashMap;
+import java.util.TreeMap;
 import java.util.Map;
 
@@ -141,14 +142,21 @@
 		selected.removeAllElements();
 		unselected.removeAllElements();
+		Map<String, Action> us = new TreeMap<String, Action>();
 		for (Action a : actions.values())
-			unselected.addElement(a);
+		{
+			String name = a.getValue(a.NAME).toString();
+			if(!name.equals(" "))
+				us.put(a.getValue(a.NAME).toString(), a);
+		}
+		for (String a : us.keySet())
+			unselected.addElement(us.get(a));
 		unselected.addElement(null);
 
 		final JPanel left = new JPanel(new GridBagLayout());
-		left.add(new JLabel("Toolbar"), GBC.eol());
+		left.add(new JLabel(tr("Toolbar")), GBC.eol());
 		left.add(new JScrollPane(selectedList), GBC.std().fill(GBC.BOTH));
 
 		final JPanel right = new JPanel(new GridBagLayout());
-		right.add(new JLabel("Available"), GBC.eol());
+		right.add(new JLabel(tr("Available")), GBC.eol());
 		right.add(new JScrollPane(unselectedList), GBC.eol().fill(GBC.BOTH));
 
@@ -191,5 +199,5 @@
 		p.add(right);
 
-		JPanel panel = gui.createPreferenceTab("toolbar", "Toolbar customization", "Customize the elements on the toolbar.");
+		JPanel panel = gui.createPreferenceTab("toolbar", tr("Toolbar customization"), tr("Customize the elements on the toolbar."));
 		panel.add(p, GBC.eol().fill(GBC.BOTH));
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 693)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 694)
@@ -334,4 +334,9 @@
 	public TaggingPreset() {}
 
+
+	public boolean isEmpty()
+	{
+		return (data.size() == 0);
+	}
 	/**
 	 * Called from the XML parser to set the name of the tagging preset
