Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 3222)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 3223)
@@ -21,4 +21,5 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -46,4 +47,6 @@
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.tree.DefaultMutableTreeNode;
@@ -61,4 +64,7 @@
 
 public class ToolbarPreferences implements PreferenceSettingFactory {
+
+
+    private static final String EMPTY_TOOLBAR_MARKER = "<!-empty-!>";
 
     public static class ActionDefinition {
@@ -283,4 +289,5 @@
                         } else if (node.getUserObject() instanceof Action) {
                             selected.add(leadItem++, new ActionDefinition((Action)node.getUserObject()));
+
                         }
                     }
@@ -346,4 +353,6 @@
         private JButton upButton;
         private JButton downButton;
+        private JButton removeButton;
+        private JButton addButton;
 
         private String movingComponent;
@@ -366,4 +375,12 @@
             b.setActionCommand(name);
             return b;
+        }
+
+        private void updateEnabledState() {
+            int index = selectedList.getSelectedIndex();
+            upButton.setEnabled(index > 0);
+            downButton.setEnabled(index < selectedList.getModel().getSize() - 1);
+            removeButton.setEnabled(index != -1);
+            addButton.setEnabled(actionsTree.getSelectionCount() > 0);
         }
 
@@ -416,6 +433,5 @@
                         actionParametersPanel.setVisible(actionParametersModel.getRowCount() > 0);
                     }
-                    upButton.setEnabled(sel);
-                    downButton.setEnabled(sel);
+                    updateEnabledState();
                 }
             });
@@ -461,8 +477,10 @@
                         int dataLength = draggedData.size();
 
+
                         if (leadItem != null) {
                             for (Object o: draggedData) {
                                 if (leadItem.equals(o))
                                     return false;
+
                             }
                         }
@@ -553,4 +571,9 @@
             });
             actionsTree.setDragEnabled(true);
+            actionsTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
+                public void valueChanged(TreeSelectionEvent e) {
+                    updateEnabledState();
+                }
+            });
 
             final JPanel left = new JPanel(new GridBagLayout());
@@ -564,9 +587,8 @@
             final JPanel buttons = new JPanel(new GridLayout(6,1));
             buttons.add(upButton = createButton("up"));
-            buttons.add(createButton("<"));
-            buttons.add(createButton(">"));
+            buttons.add(addButton = createButton("<"));
+            buttons.add(removeButton = createButton(">"));
             buttons.add(downButton = createButton("down"));
-            upButton.setEnabled(false);
-            downButton.setEnabled(false);
+            updateEnabledState();
 
             final JPanel p = new JPanel();
@@ -621,8 +643,13 @@
             for (int i = 0; i < selected.size(); ++i) {
                 if (selected.get(i) == ActionDefinition.SEPARATOR) {
+
                     t.add("|");
+
                 } else {
                     t.add(parser.saveAction((ActionDefinition)(selected.get(i))));
                 }
+            }
+            if (t.isEmpty()) {
+                t = Collections.singletonList(EMPTY_TOOLBAR_MARKER);
             }
             Main.pref.putCollection("toolbar", t);
@@ -685,4 +712,5 @@
 
     private static Collection<String> getToolString() {
+
         Collection<String> toolStr = Main.pref.getCollection("toolbar", Arrays.asList(deftoolbar));
         if (toolStr == null || toolStr.size() == 0) {
@@ -735,4 +763,5 @@
             if (action == ActionDefinition.SEPARATOR) {
                 control.addSeparator();
+
             } else {
                 Action a = action.getParametrizedAction();
