@Override public String getInputClientId() { return getClientId(getFacesContext()) + "_input"; }
public boolean isDynamicLoadRequest(FacesContext context) { return context.getExternalContext().getRequestParameterMap().containsKey(getClientId(context) + "_dynamicload"); }
public boolean isMoreTextRequest(FacesContext context) { return context.getExternalContext().getRequestParameterMap().containsKey(getClientId(context) + "_moreText"); }
protected void decodeSingle(FacesContext context, AutoComplete ac) { Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String clientId = ac.getClientId(context); String valueParam = (ac.getVar() != null) ? clientId + "_hinput" : clientId + "_input"; String submittedValue = params.get(valueParam); if (submittedValue != null) { ac.setSubmittedValue(submittedValue); } }
protected void decodeMultiple(FacesContext context, AutoComplete ac) { Map<String, String[]> paramValues = context.getExternalContext().getRequestParameterValuesMap(); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String clientId = ac.getClientId(context); String[] hinputValues = paramValues.get(clientId + "_hinput"); String[] submittedValues = (hinputValues != null) ? hinputValues : new String[]{}; String inputValue = params.get(clientId + "_input"); if (!isValueBlank(inputValue)) { submittedValues = LangUtils.concat(submittedValues, new String[]{inputValue}); } if (submittedValues.length > 0) { ac.setSubmittedValue(submittedValues); } else { ac.setSubmittedValue(""); } }
@Override public void encodeEnd(FacesContext context, UIComponent component) throws IOException { AutoComplete autoComplete = (AutoComplete) component; Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String query = params.get(autoComplete.getClientId(context) + "_query"); if (query != null) { if (autoComplete.isDynamicLoadRequest(context)) { encodePanel(context, autoComplete); } else { encodeResults(context, component, query); } } else { encodeMarkup(context, autoComplete); encodeScript(context, autoComplete); } }
Object selectedItemValue = convertValue(context, params.get(getClientId(context) + "_itemSelect")); SelectEvent selectEvent = new SelectEvent(this, ajaxBehaviorEvent.getBehavior(), selectedItemValue); selectEvent.setPhaseId(ajaxBehaviorEvent.getPhaseId()); Object unselectedItemValue = convertValue(context, params.get(getClientId(context) + "_itemUnselect")); UnselectEvent unselectEvent = new UnselectEvent(this, ajaxBehaviorEvent.getBehavior(), unselectedItemValue); unselectEvent.setPhaseId(ajaxBehaviorEvent.getPhaseId());
protected void encodePanel(FacesContext context, AutoComplete ac) throws IOException { ResponseWriter writer = context.getResponseWriter(); String styleClass = ac.getPanelStyleClass(); styleClass = styleClass == null ? AutoComplete.PANEL_CLASS : AutoComplete.PANEL_CLASS + " " + styleClass; writer.startElement("span", null); writer.writeAttribute("id", ac.getClientId(context) + "_panel", null); writer.writeAttribute("class", styleClass, null); writer.writeAttribute("role", "listbox", null); if (ac.getPanelStyle() != null) { writer.writeAttribute("style", ac.getPanelStyle(), null); } if (ac.isDynamic() && ac.isDynamicLoadRequest(context)) { Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String query = params.get(ac.getClientId(context) + "_query"); encodeResults(context, ac, query); } writer.endElement("span"); }
@Override public void decode(FacesContext context, UIComponent component) { AutoComplete ac = (AutoComplete) component; String clientId = ac.getClientId(context); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); if (!shouldDecode(ac)) { return; } if (ac.isMultiple()) { decodeMultiple(context, ac); } else { decodeSingle(context, ac); } decodeBehaviors(context, ac); // AutoComplete event String query = params.get(clientId + "_query"); if (query != null) { AutoCompleteEvent autoCompleteEvent = new AutoCompleteEvent(ac, query); autoCompleteEvent.setPhaseId(PhaseId.APPLY_REQUEST_VALUES); ac.queueEvent(autoCompleteEvent); } }
protected void encodeSingleMarkup(FacesContext context, AutoComplete ac) throws IOException { ResponseWriter writer = context.getResponseWriter(); String clientId = ac.getClientId(context); String styleClass = ac.getStyleClass(); styleClass = styleClass == null ? AutoComplete.STYLE_CLASS : AutoComplete.STYLE_CLASS + " " + styleClass; writer.startElement("span", null); writer.writeAttribute("id", clientId, null); writer.writeAttribute("class", styleClass, null); if (ac.getStyle() != null) { writer.writeAttribute("style", ac.getStyle(), null); } encodeInput(context, ac, clientId); if (ac.getVar() != null) { encodeHiddenInput(context, ac, clientId); } if (ac.isDropdown()) { encodeDropDown(context, ac); } if (!ac.isDynamic()) { encodePanel(context, ac); } writer.endElement("span"); }
protected void encodeMultipleMarkup(FacesContext context, AutoComplete ac) throws IOException { ResponseWriter writer = context.getResponseWriter(); String clientId = ac.getClientId(context); String inputId = clientId + "_input";
protected void encodeScript(FacesContext context, AutoComplete ac) throws IOException { String clientId = ac.getClientId(context); WidgetBuilder wb = getWidgetBuilder(context); wb.init("AutoComplete", ac.resolveWidgetVar(), clientId);
public boolean isDynamicLoadRequest(FacesContext context) { return context.getExternalContext().getRequestParameterMap().containsKey(this.getClientId(context) + "_dynamicload"); }
public String getInputClientId() { return this.getClientId(getFacesContext()) + "_input"; }
public boolean isMoreTextRequest(FacesContext context) { return context.getExternalContext().getRequestParameterMap().containsKey(this.getClientId(context) + "_moreText"); }
protected void decodeSingle(FacesContext context, AutoComplete ac) { Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String clientId = ac.getClientId(context); String valueParam = (ac.getVar() != null) ? clientId + "_hinput" : clientId + "_input"; String submittedValue = params.get(valueParam); if (submittedValue != null) { ac.setSubmittedValue(submittedValue); } }
protected void decodeMultiple(FacesContext context, AutoComplete ac) { Map<String, String[]> paramValues = context.getExternalContext().getRequestParameterValuesMap(); Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String clientId = ac.getClientId(context); String[] hinputValues = paramValues.get(clientId + "_hinput"); String[] submittedValues = (hinputValues != null) ? hinputValues : new String[]{}; String inputValue = params.get(clientId + "_input"); if (!isValueBlank(inputValue)) { submittedValues = ArrayUtils.concat(submittedValues, new String[]{inputValue}); } if (submittedValues.length > 0) { ac.setSubmittedValue(submittedValues); } else { ac.setSubmittedValue(""); } }
@Override public void encodeEnd(FacesContext context, UIComponent component) throws IOException { AutoComplete autoComplete = (AutoComplete) component; Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String query = params.get(autoComplete.getClientId(context) + "_query"); if (query != null) { if (autoComplete.isDynamicLoadRequest(context)) { encodePanel(context, autoComplete); } else { encodeResults(context, component, query); } } else { encodeMarkup(context, autoComplete); encodeScript(context, autoComplete); } }
protected void encodePanel(FacesContext context, AutoComplete ac) throws IOException { ResponseWriter writer = context.getResponseWriter(); String styleClass = ac.getPanelStyleClass(); styleClass = styleClass == null ? AutoComplete.PANEL_CLASS : AutoComplete.PANEL_CLASS + " " + styleClass; writer.startElement("span", null); writer.writeAttribute("id", ac.getClientId(context) + "_panel", null); writer.writeAttribute("class", styleClass, null); writer.writeAttribute("role", "listbox", null); if (ac.getPanelStyle() != null) { writer.writeAttribute("style", ac.getPanelStyle(), null); } if (ac.isDynamic() && ac.isDynamicLoadRequest(context)) { Map<String, String> params = context.getExternalContext().getRequestParameterMap(); String query = params.get(ac.getClientId(context) + "_query"); encodeResults(context, ac, query); } writer.endElement("span"); }
@Override protected void encodeScript(FacesContext context, AutoComplete ac) throws IOException { String clientId = ac.getClientId(context); WidgetBuilder wb = getWidgetBuilder(context); wb.init("AutoComplete", ac.resolveWidgetVar(), clientId); wb.attr("minLength", ac.getMinQueryLength(), 1) .attr("delay", ac.getQueryDelay(), 300); String emptyMessage = ac.getEmptyMessage(); if (emptyMessage != null) { wb.attr("emptyMessage", emptyMessage, null); } encodeClientBehaviors(context, ac); wb.finish(); }