use of org.drools.workbench.models.guided.dtree.shared.model.nodes.HasValue in project drools-wb by kiegroup.
the class ValueEditorFactory method getValueEditor.
public Widget getValueEditor(final String className, final String fieldName, final HasValue hasValue, final AsyncPackageDataModelOracle oracle, final boolean isMultipleSelect) {
String dataType = oracle.getFieldType(className, fieldName);
// Operators "contained in" and "not contained in" fallback to Strings
if (isMultipleSelect) {
dataType = DataType.TYPE_STRING;
}
// Fields with enumerations fallback to Strings
DropDownData dd = null;
if (oracle.hasEnums(className, fieldName)) {
final Map<String, String> currentValueMap = getCurrentValueMap();
dd = oracle.getEnums(className, fieldName, currentValueMap);
}
// Ensure Node has a value if needed
if (hasValue.getValue() == null) {
final Value value = ValueUtilities.makeEmptyValue(dataType);
if (value == null) {
ErrorPopup.showMessage(GuidedDecisionTreeConstants.INSTANCE.dataTypeNotSupported0(dataType));
return null;
} else {
hasValue.setValue(value);
}
}
// Setup the correct widget corresponding to the data type
if (dataType.equals(DataType.TYPE_DATE)) {
final DatePicker valueEditor = new DatePicker(false);
// Wire-up update handler
valueEditor.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(final ValueChangeEvent<Date> event) {
hasValue.getValue().setValue(valueEditor.getValue());
}
});
// Set Widget's value
valueEditor.setFormat(DATE_FORMAT);
valueEditor.setValue((Date) hasValue.getValue().getValue());
return valueEditor;
} else if (dataType.equals(DataType.TYPE_BOOLEAN)) {
final ListBox valueEditor = new ListBox();
valueEditor.addItem("true");
valueEditor.addItem("false");
// Wire-up update handler
valueEditor.addClickHandler(new ClickHandler() {
public void onClick(final ClickEvent event) {
final String txtValue = valueEditor.getValue(valueEditor.getSelectedIndex());
final Boolean value = Boolean.valueOf(txtValue);
hasValue.getValue().setValue(value);
}
});
// Set Widget's value
valueEditor.setSelectedIndex(hasValue.getValue().getValue().equals(Boolean.TRUE) ? 0 : 1);
return valueEditor;
} else {
// If we have enumeration data show a ListBox
if (dd != null) {
final ListBox valueEditor = makeListBox(dd, hasValue, oracle, isMultipleSelect);
return valueEditor;
}
// Otherwise show a TextBox
final TextBox valueEditor = TextBoxFactory.getTextBox(dataType);
// Wire-up Handlers before setting value, as invalid values cause the ValueChangeHandler to be invoked
valueEditor.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(final ValueChangeEvent<String> event) {
hasValue.getValue().setValue(event.getValue());
}
});
// Set Widget's value
valueEditor.setText(ValueUtilities.convertNodeValue(hasValue.getValue()));
return valueEditor;
}
}
Aggregations