package com.loomis.jsf.component.keystrokevalidatedinput; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.el.MethodBinding; import org.apache.myfaces.taglib.html.ext.HtmlInputTextTag; public class KeyStrokeValidatedInputTag extends HtmlInputTextTag { private final static Class[] DEFAULT_SIGNATURE = new Class[]{Boolean.class, String.class, KeyStrokeValidatedInput.class}; private String validatorMethod; private String idOfMessageDiv; private String ajaxEnabled; public String getComponentType() { return KeyStrokeValidatedInput.COMPONENT_TYPE; } public String getRendererType() { return KeyStrokeValidatedInput.DEFAULT_RENDERER_TYPE; } public void release() { super.release(); idOfMessageDiv = null; validatorMethod = null; ajaxEnabled = null; } protected void setProperties(UIComponent component) { super.setProperties(component); setIntegerProperty(component,"validatorMethod", validatorMethod); setValidatorMethodProperty(getFacesContext(), component, validatorMethod); setStringProperty(component,"idOfMessageDiv", idOfMessageDiv); setBooleanProperty(component,"ajaxEnabled", ajaxEnabled); } public static void setValidatorMethodProperty(FacesContext context, UIComponent component, String validatorMethod) { if (validatorMethod == null) return; if (!(component instanceof KeyStrokeValidatedInput)) { throw new IllegalArgumentException("Component " + component.getClientId(context) + " is not a KeyStrokeValidatedInput"); } if (isValueReference(validatorMethod)) { MethodBinding mb = context.getApplication().createMethodBinding(validatorMethod, DEFAULT_SIGNATURE); ((KeyStrokeValidatedInput)component).setValidatorMethod(mb); } else { // TODO Add logging } } public String getIdOfMessageDiv() { return idOfMessageDiv; } public void setIdOfMessageDiv(String idOfMessageDiv) { this.idOfMessageDiv = idOfMessageDiv; } public String getValidatorMethod() { return validatorMethod; } public void setValidatorMethod(String validatorMethod) { this.validatorMethod = validatorMethod; } public String getAjaxEnabled() { return ajaxEnabled; } public void setAjaxEnabled(String ajaxEnabled) { this.ajaxEnabled = ajaxEnabled; } }