/** * Create widgets to enable user to input data for fields of text or number type * * @param parent composite where the widgets will be attached to * @param monkeyOption the corresponding monkey option */ private void createWidgetsForTextOrNumberType( final Composite parent, final MonkeyOption monkeyOption) { // create input text if ((monkeyOption.getPreDefinedValues() == null) || (monkeyOption.getPreDefinedValues().size() == 0)) { final Text inputText = new Text(parent, SWT.SINGLE | SWT.BORDER); inputText.setText(monkeyOption.getValue()); monkeyOption.setValueWidget(inputText); inputText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); inputText.addModifyListener( new ModifyListener() { @Override public void modifyText(ModifyEvent e) { monkeyOption.setValue(inputText.getText()); notifyCompositeChangeListeners(); } }); } // create combobox else { final Combo combo = new Combo(parent, SWT.READ_ONLY); monkeyOption.setValueWidget(combo); int selectedIndex = 0; for (String preDefinedValue : monkeyOption.getPreDefinedValues()) { combo.add(preDefinedValue); if (monkeyOption.getValue().equals(preDefinedValue)) { combo.select(selectedIndex); } else { selectedIndex++; } } combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1)); combo.addModifyListener( new ModifyListener() { @Override public void modifyText(ModifyEvent e) { monkeyOption.setValue(combo.getText()); notifyCompositeChangeListeners(); } }); } }