package org.richfaces.demo.inplaces; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.RequestScoped; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import org.richfaces.demo.tables.model.capitals.Capital; @ManagedBean @RequestScoped public class InplaceSelectBean { @ManagedProperty(value = "#{capitalsParser.capitalsList}") private List<Capital> capitals; private List<SelectItem> capitalsOptions = null; private String value; @PostConstruct public void init() { capitalsOptions = new ArrayList<SelectItem>(); for (Capital capital : capitals) { capitalsOptions.add(new SelectItem(capital.getName(), capital.getState())); } } public Collection<Capital> autocomplete(FacesContext facesContext, UIComponent component, final String prefix) { Collection<Capital> persons = Collections2.filter(capitals, new Predicate<Capital>() { @Override public boolean apply(Capital capital) { if (prefix == null) { return true; } return capital.getState().toLowerCase().startsWith(prefix.toLowerCase()); } }); return persons; } public List<SelectItem> getCapitalsOptions() { return capitalsOptions; } public void setCapitalsOptions(List<SelectItem> capitalsOptions) { this.capitalsOptions = capitalsOptions; } public void setCapitals(List<Capital> capitals) { this.capitals = capitals; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }