Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 8421)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 8422)
@@ -25,8 +25,8 @@
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.swing.AbstractAction;
@@ -83,5 +83,5 @@
         private String icon = "";
         private ImageIcon ico = null;
-        private final Map<String, Object> parameters = new HashMap<>();
+        private final Map<String, Object> parameters = new ConcurrentHashMap<>();
 
         public ActionDefinition(Action action) {
@@ -209,5 +209,5 @@
 
                 ParameterizedAction parametrizedAction = (ParameterizedAction)action;
-                Map<String, ActionParameter<?>> actionParams = new HashMap<>();
+                Map<String, ActionParameter<?>> actionParams = new ConcurrentHashMap<>();
                 for (ActionParameter<?> param: parametrizedAction.getActionParameters()) {
                     actionParams.put(param.getName(), param);
@@ -218,5 +218,5 @@
                     skip('=');
                     String paramValue = readTillChar(',',')');
-                    if (paramName.length() > 0) {
+                    if (paramName.length() > 0 && paramValue.length() > 0) {
                         ActionParameter<?> actionParam = actionParams.get(paramName);
                         if (actionParam != null) {
@@ -369,17 +369,23 @@
         @Override
         public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+            String val = (String) aValue;
+            int paramIndex = rowIndex;
+
             if(currentAction.getAction() instanceof AdaptableAction) {
                 if (rowIndex == 0) {
-                     currentAction.setName((String)aValue);
+                     currentAction.setName(val);
                      return;
                 } else if (rowIndex == 1) {
-                     currentAction.setIcon((String)aValue);
+                     currentAction.setIcon(val);
                      return;
                 } else {
-                    rowIndex -= 2;
-                }
-            }
-            ActionParameter<Object> param = getParam(rowIndex);
-            currentAction.getParameters().put(param.getName(), param.readFromString((String)aValue));
+                    paramIndex -= 2;
+                }
+            }
+            ActionParameter<Object> param = getParam(paramIndex);
+
+            if (param != null && val.length() > 0) {
+                currentAction.getParameters().put(param.getName(), param.readFromString((String)aValue));
+            }
         }
 
@@ -470,11 +476,11 @@
      * Value: The action to execute.
      */
-    private final Map<String, Action> actions = new HashMap<>();
-    private final Map<String, Action> regactions = new HashMap<>();
+    private final Map<String, Action> actions = new ConcurrentHashMap<>();
+    private final Map<String, Action> regactions = new ConcurrentHashMap<>();
 
     private final DefaultMutableTreeNode rootActionsNode = new DefaultMutableTreeNode(tr("Actions"));
 
     public JToolBar control = new JToolBar();
-    private final Map<Object, ActionDefinition> buttonActions = new HashMap<>(30);
+    private final Map<Object, ActionDefinition> buttonActions = new ConcurrentHashMap<>(30);
 
     @Override
@@ -971,5 +977,5 @@
         loadActions();
 
-        Map<String, Action> allActions = new HashMap<>(regactions);
+        Map<String, Action> allActions = new ConcurrentHashMap<>(regactions);
         allActions.putAll(actions);
         ActionParser actionParser = new ActionParser(allActions);
