Search in sources :

Example 1 with Attribute

use of org.drools.workbench.models.datamodel.rule.Attribute in project drools-wb by kiegroup.

the class DefaultValueWidgetFactory method getDefaultValueWidget.

// BZ-996932: Added value change notifications.
public static Widget getDefaultValueWidget(final AttributeCol52 ac, final boolean isReadOnly, final DefaultValueChangedEventHandler defaultValueChangedEventHandler) {
    Widget editor = null;
    final String attribute = ac.getAttribute();
    if (Objects.equals(attribute, Attribute.DIALECT.getAttributeName())) {
        final ListBox lb = new ListBox();
        lb.addItem(RuleAttributeWidget.DIALECTS.get(0));
        lb.addItem(RuleAttributeWidget.DIALECTS.get(1));
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(RuleAttributeWidget.DIALECTS.get(1)));
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        final String stringValue = defaultValue.getStringValue();
        lb.setEnabled(!isReadOnly);
        if (!isReadOnly) {
            lb.addChangeHandler(event -> {
                final int selectedIndex = lb.getSelectedIndex();
                if (selectedIndex < 0) {
                    return;
                }
                DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
                editedDefaultValue.setStringValue(lb.getValue(selectedIndex));
                defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
            });
        }
        if (stringValue == null || stringValue.isEmpty()) {
            lb.setSelectedIndex(1);
            defaultValue.setStringValue(RuleAttributeWidget.DIALECTS.get(1));
        } else if (stringValue.equals(RuleAttributeWidget.DIALECTS.get(0))) {
            lb.setSelectedIndex(0);
        } else if (stringValue.equals(RuleAttributeWidget.DIALECTS.get(1))) {
            lb.setSelectedIndex(1);
        } else {
            lb.setSelectedIndex(1);
            defaultValue.setStringValue(RuleAttributeWidget.DIALECTS.get(1));
        }
        editor = lb;
    } else if (Objects.equals(attribute, Attribute.SALIENCE.getAttributeName())) {
        final TextBox tb = TextBoxFactory.getTextBox(DataType.TYPE_NUMERIC_INTEGER);
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(0));
        } else {
            assertIntegerDefaultValue(ac.getDefaultValue());
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        final Integer numericValue = (Integer) defaultValue.getNumericValue();
        tb.setValue(numericValue == null ? "" : numericValue.toString());
        tb.setEnabled(!isReadOnly);
        if (!isReadOnly) {
            tb.addValueChangeHandler(event -> {
                DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
                try {
                    editedDefaultValue.setNumericValue(Integer.valueOf(event.getValue()));
                } catch (NumberFormatException nfe) {
                    editedDefaultValue.setNumericValue(0);
                    tb.setValue("0");
                } finally {
                    defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
                }
            });
        }
        editor = tb;
    } else if (Objects.equals(attribute, Attribute.DURATION.getAttributeName())) {
        final TextBox tb = TextBoxFactory.getTextBox(DataType.TYPE_NUMERIC_LONG);
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(0L));
        } else {
            assertLongDefaultValue(ac.getDefaultValue());
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        final Long numericValue = (Long) defaultValue.getNumericValue();
        tb.setValue(numericValue == null ? "" : numericValue.toString());
        tb.setEnabled(!isReadOnly);
        if (!isReadOnly) {
            tb.addValueChangeHandler(event -> {
                DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
                try {
                    editedDefaultValue.setNumericValue(Long.valueOf(event.getValue()));
                } catch (NumberFormatException nfe) {
                    editedDefaultValue.setNumericValue(0L);
                    tb.setValue("0");
                } finally {
                    defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
                }
            });
        }
        editor = tb;
    } else if (Objects.equals(Attribute.getAttributeDataType(attribute), DataType.TYPE_STRING)) {
        final TextBox tb = TextBoxFactory.getTextBox(DataType.TYPE_STRING);
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(""));
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        tb.setValue(defaultValue.getStringValue());
        tb.setEnabled(!isReadOnly);
        if (!isReadOnly) {
            tb.addValueChangeHandler(event -> {
                DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
                editedDefaultValue.setStringValue(tb.getValue());
                defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
            });
        }
        editor = tb;
    } else if (Objects.equals(Attribute.getAttributeDataType(attribute), DataType.TYPE_BOOLEAN)) {
        final CheckBox cb = new CheckBox();
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(Boolean.FALSE));
        } else {
            assertBooleanDefaultValue(ac.getDefaultValue());
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        final Boolean booleanValue = defaultValue.getBooleanValue();
        cb.setEnabled(!isReadOnly);
        if (booleanValue == null) {
            cb.setValue(false);
            defaultValue.setBooleanValue(Boolean.FALSE);
        } else {
            cb.setValue(booleanValue);
        }
        cb.addClickHandler(event -> {
            DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
            editedDefaultValue.setBooleanValue(cb.getValue());
            defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
        });
        editor = cb;
    } else if (Objects.equals(Attribute.getAttributeDataType(attribute), DataType.TYPE_DATE)) {
        if (ac.getDefaultValue() == null) {
            ac.setDefaultValue(new DTCellValue52(new Date()));
        } else {
            assertDateDefaultValue(ac.getDefaultValue());
        }
        final DTCellValue52 defaultValue = ac.getDefaultValue();
        if (isReadOnly) {
            final TextBox tb = TextBoxFactory.getTextBox(DataType.TYPE_STRING);
            tb.setValue(format.format(defaultValue.getDateValue()));
            tb.setEnabled(false);
        } else {
            final DatePicker datePicker = new DatePicker();
            // Wire up update handler
            datePicker.addChangeDateHandler(event -> {
                DTCellValue52 editedDefaultValue = defaultValue.cloneDefaultValueCell();
                editedDefaultValue.setDateValue(datePicker.getValue());
                defaultValueChangedEventHandler.onDefaultValueChanged(new DefaultValueChangedEvent(defaultValue, editedDefaultValue));
            });
            final Date dateValue = defaultValue.getDateValue();
            datePicker.setFormat(DATE_FORMAT);
            datePicker.setValue(dateValue);
            editor = datePicker;
        }
    }
    return editor;
}
Also used : DataType(org.kie.soup.project.datamodel.oracle.DataType) Date(java.util.Date) AttributeCol52(org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52) ApplicationPreferences(org.kie.workbench.common.services.shared.preferences.ApplicationPreferences) TextBox(org.gwtbootstrap3.client.ui.TextBox) ListBox(org.gwtbootstrap3.client.ui.ListBox) TextBoxFactory(org.kie.workbench.common.widgets.client.widget.TextBoxFactory) Objects(java.util.Objects) Attribute(org.drools.workbench.models.datamodel.rule.Attribute) Widget(com.google.gwt.user.client.ui.Widget) DateTimeFormat(com.google.gwt.i18n.client.DateTimeFormat) DatePicker(org.uberfire.ext.widgets.common.client.common.DatePicker) RuleAttributeWidget(org.drools.workbench.screens.guided.rule.client.widget.attribute.RuleAttributeWidget) CheckBox(org.gwtbootstrap3.client.ui.CheckBox) DTCellValue52(org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52) Widget(com.google.gwt.user.client.ui.Widget) RuleAttributeWidget(org.drools.workbench.screens.guided.rule.client.widget.attribute.RuleAttributeWidget) TextBox(org.gwtbootstrap3.client.ui.TextBox) DTCellValue52(org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52) Date(java.util.Date) CheckBox(org.gwtbootstrap3.client.ui.CheckBox) DatePicker(org.uberfire.ext.widgets.common.client.common.DatePicker) ListBox(org.gwtbootstrap3.client.ui.ListBox)

Aggregations

DateTimeFormat (com.google.gwt.i18n.client.DateTimeFormat)1 Widget (com.google.gwt.user.client.ui.Widget)1 Date (java.util.Date)1 Objects (java.util.Objects)1 Attribute (org.drools.workbench.models.datamodel.rule.Attribute)1 AttributeCol52 (org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52)1 DTCellValue52 (org.drools.workbench.models.guided.dtable.shared.model.DTCellValue52)1 RuleAttributeWidget (org.drools.workbench.screens.guided.rule.client.widget.attribute.RuleAttributeWidget)1 CheckBox (org.gwtbootstrap3.client.ui.CheckBox)1 ListBox (org.gwtbootstrap3.client.ui.ListBox)1 TextBox (org.gwtbootstrap3.client.ui.TextBox)1 DataType (org.kie.soup.project.datamodel.oracle.DataType)1 ApplicationPreferences (org.kie.workbench.common.services.shared.preferences.ApplicationPreferences)1 TextBoxFactory (org.kie.workbench.common.widgets.client.widget.TextBoxFactory)1 DatePicker (org.uberfire.ext.widgets.common.client.common.DatePicker)1