package lt.inventi.wicket;
import java.util.List;
import org.apache.wicket.Session;
import org.apache.wicket.model.IModel;
import lt.inventi.wicket.component.autocomplete.AbstractDataProvider;
import lt.inventi.wicket.component.autocomplete.AbstractSearchProvider;
import lt.inventi.wicket.component.autocomplete.Autocomplete;
public class PersonAutocomplete extends Autocomplete<String, Person, Person> {
public PersonAutocomplete(String id) {
this(id, null);
}
public PersonAutocomplete(String id, IModel<Person> model) {
super(id, model);
setDataProvider(new PersonProvider());
PersonSearchProvider searchProvider = new PersonSearchProvider();
setDataValueProvider(searchProvider);
setSearchProvider(searchProvider);
}
private static class PersonProvider extends AbstractDataProvider<Person> {
@Override
public String getId(Person object) {
return object.id;
}
@Override
protected Person doLoadById(String id) {
return PersonDatabase.findById(id);
}
}
private static class PersonSearchProvider extends AbstractSearchProvider<Person> {
@Override
public List<Person> searchItems(String query, int size) {
return PersonDatabase.findByNameLike(query, Session.get().getLocale());
}
@Override
public String extractValue(Person item) {
return item.name;
}
@Override
protected String extractSearchLabel(Person item) {
return item.name + " (" + item.age + ")";
}
@Override
protected String extractId(Person item) {
return item.id;
}
}
}