I’d really like to use this component for Binding to a Grid / Binder, is that something that can possibly be implemented?
Hello,
It will be analysed to check if it does make sense and can be done in a reasonable amount of time, I’ll keep you posted!
For now it is not likely I’ll be adding binder support in the next days, but something like this could do the trick:
public class HelloWorldView extends HorizontalLayout {
public class ExampleB {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
private ExtendedAutosuggest<String> autosuggest = new ExtendedAutosuggest<>();
private ExampleB bean = new ExampleB();
public HelloWorldView() {
setMargin(true);
List<String> listOfStrings = new ArrayList<>();
listOfStrings.add("jane");
listOfStrings.add("sarah");
listOfStrings.add("mary");
listOfStrings.add("paul");
listOfStrings.add("sean");
listOfStrings.add("charles");
listOfStrings.add("beth");
listOfStrings.add("tania");
listOfStrings.add("judith");
listOfStrings.add("jason");
add(autosuggest);
autosuggest.setItems(listOfStrings);
Binder<ExampleB> binder = new Binder<>(ExampleB.class);
binder.forField(autosuggest)
.withNullRepresentation("")
.bind("field");
binder.setBean(bean);
}
public class ExtendedAutosuggest<T> extends Autosuggest<T> implements HasValue {
@Override
public void setValue(Object o) {
super.setValue((T) o);
}
@Override
public Registration addValueChangeListener(ValueChangeListener valueChangeListener) {
return super.addValueChangeListener(componentEvent ->
valueChangeListener.valueChanged(new ValueChangeEvent<Object>() {
@Override
public HasValue<?, Object> getHasValue() {
return null;
}
@Override
public Object getOldValue() {
return null;
}
@Override
public boolean isFromClient() {
return componentEvent.isFromClient();
}
@Override
public Object getValue() {
return ExtendedAutosuggest.super.getValue();
}
})
);
}
}
}