Changeset 18911
- Timestamp:
- 2009-04-08T13:27:32+12:00 (15 years ago)
- Location:
- gli/trunk/src/org/greenstone/gatherer
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
gli/trunk/src/org/greenstone/gatherer/cdm/Argument.java
r17826 r18911 72 72 /** An element of the argument type enumeration specifying a metadata set combobox control. */ 73 73 static final public byte METADATA_SET_NAMESPACE = 9; 74 75 ///////////kk added the number was 9, I changed it to 10//////////////76 74 /** An element of the argument type enumeration specifying a text field. */ 77 75 static final public byte URL = 10; 76 /** An editable combo box */ 77 static final public byte ENUM_STRING = 11; 78 78 79 ///////////////////////////////////////////////////////////////// 79 80 … … 94 95 /** The DOM element this argument is built around, if any. */ 95 96 private Element element; 96 /** If the argument is of type ENUM then this map holds all the various options. Each entry is an <option value> -> <description> mapping. */97 /** If the argument is of type ENUM or ENUM_STRING then this map holds all the various options. Each entry is an <option value> -> <description> mapping. */ 97 98 private ArrayList option_list = null; 98 99 /** A default value for parameter-type arguments. May be a Perl pattern. */ … … 123 124 */ 124 125 public void addOption(String name, String desc) { 125 if(type == ENUM&& name != null) {126 if((type == ENUM || type == ENUM_STRING) && name != null) { 126 127 if(desc == null) { 127 128 desc = ""; … … 412 413 if(new_type.equalsIgnoreCase(StaticStrings.ENUM_STR)) { 413 414 this.type = ENUM; 415 option_list = new ArrayList(); 416 } 417 else if(new_type.equalsIgnoreCase(StaticStrings.ENUM_STRING_STR)) { 418 this.type = ENUM_STRING; 414 419 option_list = new ArrayList(); 415 420 } -
gli/trunk/src/org/greenstone/gatherer/cdm/ArgumentControl.java
r18910 r18911 92 92 93 93 switch(argument.getType()) { 94 case Argument.ENUM_STRING: 94 95 case Argument.ENUM: 95 96 ArrayList option_list = argument.getOptions(); 96 value_control = new GComboBox(option_list.toArray(), false, false); 97 boolean editable = false; 98 if (argument.getType() == Argument.ENUM_STRING) { 99 editable = true; 100 } 101 value_control = new GComboBox(option_list.toArray(), editable, false); 97 102 value_control.setComponentOrientation(Dictionary.getOrientation()); 98 103 99 selectValue((JComboBox)value_control, initial_value); // also sets the tooltip 104 boolean found = selectValue((JComboBox)value_control, initial_value); // also sets the tooltip 105 if (!found && argument.getType() == Argument.ENUM_STRING) { 106 // Its a custom item 107 ((JComboBox) value_control).addItem(initial_value); 108 ((JComboBox) value_control).setSelectedItem(initial_value); 109 } 110 100 111 ((JComboBox)value_control).addActionListener(new ToolTipUpdater()); 101 112 break; … … 158 169 } 159 170 if (existing_value != null && existing_value.length() > 0) { 160 booleanfound = selectValue((JComboBox) value_control, existing_value);171 found = selectValue((JComboBox) value_control, existing_value); 161 172 // It's possible that this is a custom value and so doesn't exist in the combobox 162 173 if (!found) { … … 244 255 // Listener 245 256 if(value_control != null) { 246 if (argument.getType() != Argument.ENUM ) {257 if (argument.getType() != Argument.ENUM && argument.getType() != Argument.ENUM_STRING) { 247 258 // enums have already set tooltips based on option value 248 259 value_control.setToolTipText(tip); … … 325 336 case Argument.ENUM: 326 337 Argument.ArgumentOption option = (Argument.ArgumentOption)((JComboBox)value_control).getSelectedItem(); 327 if(option != null && option.name.length() > 0) { 328 argument.setValue(option.name); 329 } 330 else { 331 String args[] = new String[1]; 332 args[0] = argument.getName(); 333 if(argument.isRequired()) { 334 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 335 } 336 // They've left the field blank 337 else { 338 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 339 argument.setValue(null); 340 } 341 args = null; 342 return false; 343 } 338 // its impossible not to choose an entry 339 argument.setValue(option.name); 344 340 argument.setAssigned(true); 345 341 return true; 346 case Argument.FLAG: 347 // Should have already been handled above. 348 argument.setAssigned(true); 349 return true; 350 case Argument.INTEGER: 351 result = ((JSpinner)value_control).getValue().toString(); 352 if(result.length() > 0) { 353 // Test if the value entered is a valid int. 354 try { 355 int x = Integer.parseInt(result); 356 } 357 catch(NumberFormatException nfe) { 358 String args[] = new String[2]; 359 args[0] = argument.getName(); 360 args[1] = result; 361 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Bad_Integer", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 362 args = null; 363 return false; 364 } 365 argument.setValue(result); 366 } 367 else { 368 String args[] = new String[1]; 369 args[0] = argument.getName(); 370 if(argument.isRequired()) { 371 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 372 } 373 // They've left the field blank 374 else { 375 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 376 argument.setValue(null); 377 } 378 args = null; 379 return false; 380 } 381 argument.setAssigned(true); 382 return true; 383 case Argument.LANGUAGE: 384 String language = (((JComboBox)value_control).getSelectedItem()).toString(); 385 argument.setValue(language); 386 // Kinda lucked out here. Its impossible not to choose an entry from these comboboxes as they are restricted. 387 argument.setAssigned(true); 388 return true; 389 case Argument.METADATUM: 390 case Argument.METADATA: 391 Object new_value_raw = ((JComboBox) value_control).getSelectedItem(); 392 if (new_value_raw instanceof MetadataElement) { 393 argument.setValue(((MetadataElement) new_value_raw).getFullName()); 394 } 395 else { 396 // But we have to be careful as an arbitary string object could be zero length 342 case Argument.ENUM_STRING: 343 Object new_value_raw = ((JComboBox)value_control).getSelectedItem(); 344 if (new_value_raw instanceof Argument.ArgumentOption) { 345 argument.setValue(((Argument.ArgumentOption)new_value_raw).name); 346 } else { 347 // have entered a new string 397 348 String new_value = new_value_raw.toString(); 398 ///ystem.err.println("The current value is: " + new_value); 399 if(new_value.length() > 0) { 349 if (new_value.length() > 0) { 400 350 argument.setValue(new_value); 401 351 } … … 417 367 argument.setAssigned(true); 418 368 return true; 369 case Argument.FLAG: 370 // Should have already been handled above. 371 argument.setAssigned(true); 372 return true; 373 case Argument.INTEGER: 374 result = ((JSpinner)value_control).getValue().toString(); 375 if(result.length() > 0) { 376 // Test if the value entered is a valid int. 377 try { 378 int x = Integer.parseInt(result); 379 } 380 catch(NumberFormatException nfe) { 381 String args[] = new String[2]; 382 args[0] = argument.getName(); 383 args[1] = result; 384 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Bad_Integer", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 385 args = null; 386 return false; 387 } 388 argument.setValue(result); 389 } 390 else { 391 String args[] = new String[1]; 392 args[0] = argument.getName(); 393 if(argument.isRequired()) { 394 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 395 } 396 // They've left the field blank 397 else { 398 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 399 argument.setValue(null); 400 } 401 args = null; 402 return false; 403 } 404 argument.setAssigned(true); 405 return true; 406 case Argument.LANGUAGE: 407 String language = (((JComboBox)value_control).getSelectedItem()).toString(); 408 argument.setValue(language); 409 // Kinda lucked out here. Its impossible not to choose an entry from these comboboxes as they are restricted. 410 argument.setAssigned(true); 411 return true; 412 case Argument.METADATUM: 413 case Argument.METADATA: 414 new_value_raw = ((JComboBox) value_control).getSelectedItem(); 415 if (new_value_raw instanceof MetadataElement) { 416 argument.setValue(((MetadataElement) new_value_raw).getFullName()); 417 } 418 else { 419 // But we have to be careful as an arbitary string object could be zero length 420 String new_value = new_value_raw.toString(); 421 ///ystem.err.println("The current value is: " + new_value); 422 if(new_value.length() > 0) { 423 argument.setValue(new_value); 424 } 425 else { 426 String args[] = new String[1]; 427 args[0] = argument.getName(); 428 if(argument.isRequired()) { 429 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.Required_Argument", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 430 } 431 // They've left the field blank 432 else { 433 JOptionPane.showMessageDialog(this, Dictionary.get("CDM.ArgumentConfiguration.No_Value", args), Dictionary.get("CDM.ArgumentConfiguration.Error_Title"), JOptionPane.ERROR_MESSAGE); 434 argument.setValue(null); 435 } 436 args = null; 437 return false; 438 } 439 } 440 argument.setAssigned(true); 441 return true; 419 442 case Argument.REGEXP: 420 443 case Argument.STRING: -
gli/trunk/src/org/greenstone/gatherer/util/StaticStrings.java
r18685 r18911 99 99 static final public String ENTRY_ELEMENT = "Entry"; 100 100 static final public String ENUM_STR = "enum"; 101 static final public String ENUM_STRING_STR = "enumstring"; 101 102 static final public String EQUALS_CHARACTER = "="; 102 103 static final public String EXCLAMATION_CHARACTER = "!";
Note:
See TracChangeset
for help on using the changeset viewer.