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;
}
Aggregations