package com.loomis.jsf.component.keystrokevalidatedinput; import java.io.IOException; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import javax.faces.el.ValueBinding; import javax.faces.render.Renderer; import org.apache.myfaces.component.html.ext.HtmlInputText; import org.apache.myfaces.custom.ajax.api.AjaxComponent; import org.apache.myfaces.custom.ajax.api.AjaxRenderer; public class KeyStrokeValidatedInput extends HtmlInputText implements AjaxComponent { public static final String COMPONENT_TYPE = "com.loomis.jsf.component.KeyStrokeValidatedInput"; public static final String DEFAULT_RENDERER_TYPE = "com.loomis.jsf.component.KeyStrokeValidatedInputRenderer"; private MethodBinding validatorMethod; private String idOfMessageDiv; private Boolean ajaxEnabled; public KeyStrokeValidatedInput() { super(); setRendererType(DEFAULT_RENDERER_TYPE); } public Object saveState(FacesContext context) { Object[] values = new Object[4]; values[0] = super.saveState(context); values[1] = saveAttachedState(context, validatorMethod); values[2] = idOfMessageDiv; values[3] = ajaxEnabled; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[])state; super.restoreState(context, values[0]); validatorMethod = (MethodBinding)restoreAttachedState(context, values[1]); idOfMessageDiv = (String) values[2]; ajaxEnabled = (Boolean) values[3]; } public void encodeAjax(FacesContext context) throws IOException { if (context == null) throw new NullPointerException("context"); if (!isRendered()) return; Renderer renderer = getRenderer(context); if (renderer instanceof AjaxRenderer) { ((AjaxRenderer) renderer).encodeAjax(context, this); } } public void decodeAjax(FacesContext arg0) { } public MethodBinding getValidatorMethod() { return validatorMethod; } public void setValidatorMethod(MethodBinding validatorMethod) { this.validatorMethod = validatorMethod; } public String getIdOfMessageDiv() { if (idOfMessageDiv != null) return idOfMessageDiv; ValueBinding vb = getValueBinding("idOfMessageDiv"); return vb != null ? vb.getValue(getFacesContext()).toString() : null; } public void setIdOfMessageDiv(String idOfMessageDiv) { this.idOfMessageDiv = idOfMessageDiv; } public Boolean getAjaxEnabled() { if (ajaxEnabled != null) return ajaxEnabled; ValueBinding vb = getValueBinding("ajexEnabled"); return vb != null ? Boolean.valueOf(vb.getValue(getFacesContext()).toString()) : null; } public void setAjaxEnabled(Boolean ajaxEnabled) { this.ajaxEnabled = ajaxEnabled; } }