package org.richfaces.component.attribute; import org.richfaces.cdk.annotations.Attribute; import org.richfaces.cdk.annotations.EventName; import org.richfaces.cdk.annotations.Signature; import org.richfaces.component.AutocompleteMode; import javax.el.MethodExpression; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; /** * @author <a href="http://community.jboss.org/people/bleathem">Brian Leathem</a> */ public interface AutocompleteProps { /** * <p>Determine how the suggestion list is requested:</p> * <dl> * <dt>client</dt> * <dd>pre-loads data to the client and uses the input to filter the possible suggestions</dd> * <dt>ajax</dt> * <dd>fetches suggestions with every input change using Ajax requests</dd> * <dt>lazyClient</dt> * <dd> * lazy-loads data to the client and uses the input to filter the possible suggestions. The filtering does not start * until the input length matches a minimum value. Set the minimum value with the minChars attribute. * </dd> * <dt>cachedAjax</dt> * <dd> * lazy-loads data via Ajax requests when the input length matches a minimum value. Set the minimum value with the * minChars attribute. All suggestions are handled on the client until the input prefix is changed, at which point * a new request is made based on the new input prefix * </dd> * </dl> * <p>Default: cachedAjax</p> */ @Attribute AutocompleteMode getMode(); /** * Minimal number of chars in input to activate suggestion popup */ @Attribute int getMinChars(); /** * A request-scope attribute via which the data object for the current row will be used when iterating */ @Attribute(literal = true) String getVar(); /** * A collection of suggestions that will be provided to the user */ @Attribute() Object getAutocompleteList(); /** * Name of the request status component that will indicate the status of the Ajax request */ @Attribute String getStatus(); /** * The client-side script method to be called before an ajax request. */ @Attribute(events = @EventName("begin")) String getOnbegin(); /** * The client-side script method to be called after the DOM is updated */ @Attribute(events = @EventName("complete")) String getOncomplete(); /** * The client-side script method to be called after the ajax response comes back, but before the DOM is updated */ @Attribute(events = @EventName("beforedomupdate")) String getOnbeforedomupdate(); /** * A method which provides a list of suggestions according to a user-provided filtering value */ @Attribute(signature = @Signature(returnType = Object.class, parameters = { FacesContext.class, UIComponent.class, String.class })) MethodExpression getAutocompleteMethod(); void setAutocompleteMethod(MethodExpression expression); /** * Workaround for RF-11469 */ @Attribute(hidden = true, signature = @Signature(returnType = Object.class, parameters = { String.class })) MethodExpression getAutocompleteMethodWithOneParameter(); void setAutocompleteMethodWithOneParameter(MethodExpression expression); }