Search in sources :

Example 1 with HasValue

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;
    }
}
Also used : ClickEvent(com.google.gwt.event.dom.client.ClickEvent) DropDownData(org.kie.soup.project.datamodel.oracle.DropDownData) ValueChangeHandler(com.google.gwt.event.logical.shared.ValueChangeHandler) TextBox(org.gwtbootstrap3.client.ui.TextBox) Date(java.util.Date) ValueChangeEvent(com.google.gwt.event.logical.shared.ValueChangeEvent) ClickHandler(com.google.gwt.event.dom.client.ClickHandler) HasValue(org.drools.workbench.models.guided.dtree.shared.model.nodes.HasValue) Value(org.drools.workbench.models.guided.dtree.shared.model.values.Value) DatePicker(org.uberfire.ext.widgets.common.client.common.DatePicker) ListBox(org.gwtbootstrap3.client.ui.ListBox)

Aggregations

ClickEvent (com.google.gwt.event.dom.client.ClickEvent)1 ClickHandler (com.google.gwt.event.dom.client.ClickHandler)1 ValueChangeEvent (com.google.gwt.event.logical.shared.ValueChangeEvent)1 ValueChangeHandler (com.google.gwt.event.logical.shared.ValueChangeHandler)1 Date (java.util.Date)1 HasValue (org.drools.workbench.models.guided.dtree.shared.model.nodes.HasValue)1 Value (org.drools.workbench.models.guided.dtree.shared.model.values.Value)1 ListBox (org.gwtbootstrap3.client.ui.ListBox)1 TextBox (org.gwtbootstrap3.client.ui.TextBox)1 DropDownData (org.kie.soup.project.datamodel.oracle.DropDownData)1 DatePicker (org.uberfire.ext.widgets.common.client.common.DatePicker)1