Index: trunk/gli/src/org/greenstone/gatherer/cdm/ArgumentConfiguration.java
===================================================================
--- trunk/gli/src/org/greenstone/gatherer/cdm/ArgumentConfiguration.java	(revision 5863)
+++ trunk/gli/src/org/greenstone/gatherer/cdm/ArgumentConfiguration.java	(revision 5864)
@@ -91,5 +91,5 @@
 	setModal(true);
 	setSize(SIZE);
-	setJMenuBar(new SimpleMenuBar("designingacollection")); // can we tell whether we are doing a classifier or plugin, to make the help more specific??	
+	setJMenuBar(new SimpleMenuBar("designingacollection")); // can we tell whether we are doing a classifier or plugin, to make the help more specific??
 	Dictionary.setText(this, "CDM.ArgumentConfiguration.Title");
 
@@ -323,4 +323,5 @@
 		Collections.sort(options_model);
 		value = new JComboBox(options_model.toArray());
+        ((JComboBox)value).setEditable(true);
 		((JComboBox)value).addActionListener(new ToolTipUpdater());
 		if(existing_value != null) {
@@ -506,5 +507,5 @@
 	  return argument;
        }
-       
+
 	public Object getValue() {
 	    if(value instanceof JComboBox) {
@@ -536,25 +537,20 @@
 		 case Argument.ENUM:
 		    ListOption option = (ListOption)((JComboBox)value).getSelectedItem();
-		    if(option == null || option.getValue().length() == 0) {
-		       String args[] = new String[1];
-		       args[0] = argument.getName();
-		       JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
-		       return false;
-		    }
-		    result = option.getValue();
-		    if(result.length() > 0) {
-		       argument.setValue(result);
+            if(option != null && option.getValue().length() > 0) {
+		       argument.setValue(option.getValue());
 		    }
 		    else {
-		       if(argument.isRequired()) {
-			  String args[] = new String[1];
-			  args[0] = argument.getName();
-			  JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
-			  args = null;
-			  return false;
-		       }
-		       else {
-			  argument.setValue(null);
-		       }
+            String args[] = new String[1];
+            args[0] = argument.getName();
+            if(argument.isRequired()) {
+                JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
+            }
+            // They've left the field blank
+            else {
+                JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
+                argument.setValue(null);
+            }
+            args = null;
+            return false;
 		    }
 		    argument.setAssigned(true);
@@ -582,14 +578,16 @@
 		    }
 		    else {
+            String args[] = new String[1];
+            args[0] = argument.getName();
 			if(argument.isRequired()) {
-			    String args[] = new String[1];
-			    args[0] = argument.getName();
 			    JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
-			    args = null;
-			    return false;
 			}
+            // They've left the field blank
 			else {
-			    argument.setValue(null);
-			}
+                JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
+                argument.setValue(null);
+            }
+            args = null;
+            return false;
 		    }
 		    argument.setAssigned(true);
@@ -626,15 +624,18 @@
 		    }
 		    else {
-			if(argument.isRequired()) {
-			    String args[] = new String[1];
-			    args[0] = argument.getName();
-			    JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
-			    return false;
-			}
-			else {
-			    argument.setValue(null);
-			}
-		    }
-		    argument.setAssigned(true);
+            String args[] = new String[1];
+            args[0] = argument.getName();
+            if(argument.isRequired()) {
+                JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
+            }
+            // They've left the field blank
+            else {
+                JOptionPane.showMessageDialog(self, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE);
+                argument.setValue(null);
+            }
+            args = null;
+            return false;
+            }
+            argument.setAssigned(true);
 		    return true;
 		}
