All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.icesoft.faces.component.ext.HtmlInputText Maven / Gradle / Ivy

There is a newer version: 3.3.0
Show newest version
/* Original Copyright
 * Copyright 2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.icesoft.faces.component.ext;

import com.icesoft.faces.component.CSS_DEFAULT;
import com.icesoft.faces.component.IceExtended;
import com.icesoft.faces.component.PORTLET_CSS_DEFAULT;
import com.icesoft.faces.component.ext.taglib.Util;
import com.icesoft.faces.context.effects.CurrentStyle;
import com.icesoft.faces.context.effects.Effect;
import com.icesoft.faces.context.effects.JavascriptContext;
import com.icesoft.faces.util.CoreUtils;
import com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer;
import com.icesoft.util.CoreComponentUtils;

import javax.faces.component.ActionSource;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import javax.faces.event.FacesEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.ValueChangeEvent;

/**
 * This is an extension of javax.faces.component.html.HtmlInputText, which
 * provides some additional behavior to this component such as: 
  • default * classes for enabled and disabled state
  • provides full and partial * submit mechanism
  • changes the component's enabled and rendered state * based on the authentication
  • adds effects to the component
  • *
  • allows to set the action and actionListener for this component
    • */ public class HtmlInputText extends javax.faces.component.html.HtmlInputText implements IceExtended, ActionSource { public static final String COMPONENT_TYPE = "com.icesoft.faces.HtmlInputText"; public static final String RENDERER_TYPE = "com.icesoft.faces.Text"; private static final boolean DEFAULT_ACTION_KEY_EVENT = false; private static final boolean DEFAULT_VISIBLE = true; private String styleClass = null; protected Boolean partialSubmit = null; private String enabledOnUserRole = null; private String renderedOnUserRole = null; private MethodBinding action = null; private MethodBinding actionListener = null; private Boolean actionKeyEvent; private boolean immediate = false; private boolean immediateSet = false; private Effect effect; private Boolean visible = null; protected boolean focus = false; private Effect onclickeffect; private Effect ondblclickeffect; private Effect onmousedowneffect; private Effect onmouseupeffect; private Effect onmousemoveeffect; private Effect onmouseovereffect; private Effect onmouseouteffect; private Effect onchangeeffect; private Effect onkeypresseffect; private Effect onkeydowneffect; private Effect onkeyupeffect; private CurrentStyle currentStyle; public HtmlInputText() { super(); setRendererType(RENDERER_TYPE); } /** * @deprecated * @return The converted text that the Renderer would output */ public String getText() { return DomBasicRenderer.converterGetAsString( FacesContext.getCurrentInstance(), this, getValue()); } /** * Mimics the behaviour of a user entering some text and submitting it. * The difference being that the processing is not kicked off from the * decode phase after a submit, but can be invoked from an actionListener * in a bean, in time for rendering. Just be aware that nothing is * being done in the proper phase. * * @deprecated * @param value Text String, like that which a user could have typed in */ public void changeText(String value) { setSubmittedValue(value); FacesContext facesContext = FacesContext.getCurrentInstance(); validate(facesContext); updateModel(facesContext); } public void setValueBinding(String s, ValueBinding vb) { if (s != null && s.indexOf("effect") != -1) { // If this is an effect attribute make sure Ice Extras is included JavascriptContext.includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } super.setValueBinding(s, vb); } /** *

      Set the value of the effect property.

      */ public void setEffect(Effect effect) { this.effect = effect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the effect property.

      */ public Effect getEffect() { if (effect != null) { return effect; } ValueBinding vb = getValueBinding("effect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the visible property.

      */ public void setVisible(boolean visible) { this.visible = Boolean.valueOf(visible); } /** *

      Return the value of the visible property.

      */ public boolean getVisible() { if (visible != null) { return visible.booleanValue(); } ValueBinding vb = getValueBinding("visible"); Boolean boolVal = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return boolVal != null ? boolVal.booleanValue() : DEFAULT_VISIBLE; } /** *

      Set the value of the partialSubmit property.

      */ public void setPartialSubmit(boolean partialSubmit) { this.partialSubmit = Boolean.valueOf(partialSubmit); } /** *

      Return the value of the partialSubmit property.

      */ public boolean getPartialSubmit() { if (partialSubmit != null) { return partialSubmit.booleanValue(); } ValueBinding vb = getValueBinding("partialSubmit"); Boolean boolVal = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return boolVal != null ? boolVal.booleanValue() : Util.isParentPartialSubmit(this); } /** *

      Set the value of the enabledOnUserRole property.

      */ public void setEnabledOnUserRole(String enabledOnUserRole) { this.enabledOnUserRole = enabledOnUserRole; } /** *

      Return the value of the enabledOnUserRole property.

      */ public String getEnabledOnUserRole() { if (enabledOnUserRole != null) { return enabledOnUserRole; } ValueBinding vb = getValueBinding("enabledOnUserRole"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the renderedOnUserRole property.

      */ public void setRenderedOnUserRole(String renderedOnUserRole) { this.renderedOnUserRole = renderedOnUserRole; } /** *

      Return the value of the renderedOnUserRole property.

      */ public String getRenderedOnUserRole() { if (renderedOnUserRole != null) { return renderedOnUserRole; } ValueBinding vb = getValueBinding("renderedOnUserRole"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the styleClass property.

      */ public void setStyleClass(String styleClass) { this.styleClass = styleClass; } /** *

      Return the value of the styleClass property.

      */ public String getStyleClass() { return Util.getQualifiedStyleClass(this, styleClass, CSS_DEFAULT.INPUT_TEXT_DEFAULT_STYLE_CLASS, "styleClass", isDisabled(), PORTLET_CSS_DEFAULT.PORTLET_FORM_INPUT_FIELD); } protected String getStyleClassField() { return styleClass; } /** *

      Return the value of the rendered property.

      */ public boolean isRendered() { if (!Util.isRenderedOnUserRole(this)) { return false; } return super.isRendered(); } /** *

      Set the value of the action property.

      */ public void setAction(MethodBinding action) { this.action = action; } /** *

      Return the value of the action property.

      */ public MethodBinding getAction() { return action; } /* (non-Javadoc) * @see javax.faces.component.ActionSource#setActionListener(javax.faces.el.MethodBinding) */ public void setActionListener(MethodBinding actionListener) { this.actionListener = actionListener; } /* (non-Javadoc) * @see javax.faces.component.ActionSource#getActionListener() */ public MethodBinding getActionListener() { return actionListener; } /* (non-Javadoc) * @see javax.faces.component.ActionSource#addActionListener(javax.faces.event.ActionListener) */ public void addActionListener(ActionListener listener) { addFacesListener(listener); } /* (non-Javadoc) * @see javax.faces.component.ActionSource#getActionListeners() */ public ActionListener[] getActionListeners() { return (ActionListener[]) getFacesListeners(ActionListener.class); } /* (non-Javadoc) * @see javax.faces.component.ActionSource#removeActionListener(javax.faces.event.ActionListener) */ public void removeActionListener(ActionListener listener) { removeFacesListener(listener); } /** *

      Set the value of the actionKeyEvent property.

      */ public void setActionKeyEvent(boolean actionKeyEvent) { this.actionKeyEvent = Boolean.valueOf(actionKeyEvent); } /** *

      Return the value of the actionKeyEvent property.

      */ public boolean isActionKeyEvent() { if (actionKeyEvent != null) { return actionKeyEvent.booleanValue(); } ValueBinding vb = getValueBinding("actionKeyEvent"); Boolean boolVal = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return boolVal != null ? boolVal.booleanValue() : DEFAULT_ACTION_KEY_EVENT; } /** *

      Return the value of the onclickeffect property.

      */ public Effect getOnclickeffect() { if (onclickeffect != null) { return onclickeffect; } ValueBinding vb = getValueBinding("onclickeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onclickeffect property.

      */ public void setOnclickeffect(Effect onclickeffect) { this.onclickeffect = onclickeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the ondblclickeffect property.

      */ public Effect getOndblclickeffect() { if (ondblclickeffect != null) { return ondblclickeffect; } ValueBinding vb = getValueBinding("ondblclickeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the ondblclickeffect property.

      */ public void setOndblclickeffect(Effect ondblclickeffect) { this.ondblclickeffect = ondblclickeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onmousedowneffect property.

      */ public Effect getOnmousedowneffect() { if (onmousedowneffect != null) { return onmousedowneffect; } ValueBinding vb = getValueBinding("onmousedowneffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onmousedowneffect property.

      */ public void setOnmousedowneffect(Effect onmousedowneffect) { this.onmousedowneffect = onmousedowneffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onmouseupeffect property.

      */ public Effect getOnmouseupeffect() { if (onmouseupeffect != null) { return onmouseupeffect; } ValueBinding vb = getValueBinding("onmouseupeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onmouseupeffect property.

      */ public void setOnmouseupeffect(Effect onmouseupeffect) { this.onmouseupeffect = onmouseupeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onmousemoveeffect property.

      */ public Effect getOnmousemoveeffect() { if (onmousemoveeffect != null) { return onmousemoveeffect; } ValueBinding vb = getValueBinding("onmousemoveeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onmousemoveeffect property.

      */ public void setOnmousemoveeffect(Effect onmousemoveeffect) { this.onmousemoveeffect = onmousemoveeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onmouseovereffect property.

      */ public Effect getOnmouseovereffect() { if (onmouseovereffect != null) { return onmouseovereffect; } ValueBinding vb = getValueBinding("onmouseovereffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onmouseovereffect property.

      */ public void setOnmouseovereffect(Effect onmouseovereffect) { this.onmouseovereffect = onmouseovereffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onmouseouteffect property.

      */ public Effect getOnmouseouteffect() { if (onmouseouteffect != null) { return onmouseouteffect; } ValueBinding vb = getValueBinding("onmouseouteffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onmouseouteffect property.

      */ public void setOnmouseouteffect(Effect onmouseouteffect) { this.onmouseouteffect = onmouseouteffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onchangeeffect property.

      */ public Effect getOnchangeeffect() { if (onchangeeffect != null) { return onchangeeffect; } ValueBinding vb = getValueBinding("onchangeeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onchangeeffect property.

      */ public void setOnchangeeffect(Effect onchangeeffect) { this.onchangeeffect = onchangeeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onkeypresseffect property.

      */ public Effect getOnkeypresseffect() { if (onkeypresseffect != null) { return onkeypresseffect; } ValueBinding vb = getValueBinding("onkeypresseffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onkeypresseffect property.

      */ public void setOnkeypresseffect(Effect onkeypresseffect) { this.onkeypresseffect = onkeypresseffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onkeydowneffect property.

      */ public Effect getOnkeydowneffect() { if (onkeydowneffect != null) { return onkeydowneffect; } ValueBinding vb = getValueBinding("onkeydowneffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onkeydowneffect property.

      */ public void setOnkeydowneffect(Effect onkeydowneffect) { this.onkeydowneffect = onkeydowneffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the onkeyupeffect property.

      */ public Effect getOnkeyupeffect() { if (onkeyupeffect != null) { return onkeyupeffect; } ValueBinding vb = getValueBinding("onkeyupeffect"); return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; } /** *

      Set the value of the onkeyupeffect property.

      */ public void setOnkeyupeffect(Effect onkeyupeffect) { this.onkeyupeffect = onkeyupeffect; JavascriptContext .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); } /** *

      Return the value of the currentStyle property.

      */ public CurrentStyle getCurrentStyle() { return currentStyle; } /** *

      Set the value of the currentStyle property.

      */ public void setCurrentStyle(CurrentStyle currentStyle) { this.currentStyle = currentStyle; } /** *

      Gets the state of the instance as a Serializable * Object.

      */ public Object saveState(FacesContext context) { Object values[] = new Object[29]; values[0] = super.saveState(context); values[1] = partialSubmit; values[2] = enabledOnUserRole; values[3] = renderedOnUserRole; values[4] = styleClass; values[5] = saveAttachedState(context, action); values[6] = saveAttachedState(context, actionListener); values[7] = actionKeyEvent; values[8] = immediate ? Boolean.TRUE : Boolean.FALSE; values[9] = immediateSet ? Boolean.TRUE : Boolean.FALSE; values[10] = effect; values[11] = onclickeffect; values[12] = ondblclickeffect; values[13] = onmousedowneffect; values[14] = onmouseupeffect; values[15] = onmousemoveeffect; values[16] = onmouseovereffect; values[17] = onmouseouteffect; values[18] = onchangeeffect; values[21] = onkeypresseffect; values[22] = onkeydowneffect; values[23] = onkeyupeffect; values[24] = currentStyle; values[25] = visible; values[26] = autocomplete; values[27] = Boolean.valueOf(focus); values[28] = getSubmittedValue(); return ((Object) (values)); } /** *

      Perform any processing required to restore the state from the entries * in the state Object.

      */ public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); partialSubmit = (Boolean) values[1]; enabledOnUserRole = (String) values[2]; renderedOnUserRole = (String) values[3]; styleClass = (String) values[4]; action = (MethodBinding) restoreAttachedState(context, values[5]); actionListener = (MethodBinding) restoreAttachedState(context, values[6]); actionKeyEvent = (Boolean) values[7]; immediate = ((Boolean) values[8]).booleanValue(); immediateSet = ((Boolean) values[9]).booleanValue(); effect = (Effect) values[10]; onclickeffect = (Effect) values[11]; ondblclickeffect = (Effect) values[12]; onmousedowneffect = (Effect) values[13]; onmouseupeffect = (Effect) values[14]; onmousemoveeffect = (Effect) values[15]; onmouseovereffect = (Effect) values[16]; onmouseouteffect = (Effect) values[17]; onchangeeffect = (Effect) values[18]; onkeypresseffect = (Effect) values[21]; onkeydowneffect = (Effect) values[22]; onkeyupeffect = (Effect) values[23]; currentStyle = (CurrentStyle) values[24]; visible = (Boolean) values[25]; autocomplete = (String) values[26]; focus = ((Boolean) values[27]).booleanValue(); setSubmittedValue(values[28]); } /* (non-Javadoc) * @see javax.faces.component.UIComponent#broadcast(javax.faces.event.FacesEvent) */ public void broadcast(FacesEvent event) throws AbortProcessingException { try { super.broadcast(event); } catch (IllegalArgumentException e) { //MyFaces thinks that a UIInput should bail out here, but //it interferes with subclass event processing } if ((event instanceof ActionEvent)) { ActionEvent actionEvent = (ActionEvent) event; try { MethodBinding actionListenerBinding = getActionListener(); if (actionListenerBinding != null) { actionListenerBinding.invoke( getFacesContext(), new Object[]{actionEvent}); } // super.broadcast(event) does this itself //ActionListener[] actionListeners = getActionListeners(); //if(actionListeners != null) { // for(int i = 0; i < actionListeners.length; i++) { // actionListeners[i].processAction(actionEvent); // } //} } catch (EvaluationException e) { Throwable cause = e.getCause(); if (cause != null && cause instanceof AbortProcessingException) { throw(AbortProcessingException) cause; } else { throw e; } }//try // Invoke the default ActionListener ActionListener listener = getFacesContext().getApplication().getActionListener(); if (listener != null) { listener.processAction((ActionEvent) event); } } } /* (non-Javadoc) * @see javax.faces.component.UIComponent#queueEvent(javax.faces.event.FacesEvent) */ public void queueEvent(FacesEvent event) { if (event instanceof ActionEvent) { if (isImmediate()) { event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES); } else { event.setPhaseId(PhaseId.INVOKE_APPLICATION); } } super.queueEvent(event); } /** *

      Return the value of the immediate property.

      */ public boolean isImmediate() { if (this.immediateSet) { return (this.immediate); } ValueBinding vb = getValueBinding("immediate"); if (vb != null) { return (Boolean.TRUE.equals(vb.getValue(getFacesContext()))); } else { return (this.immediate); } } /** *

      Return the value of the disabled property.

      */ public boolean isDisabled() { if (!Util.isEnabledOnUserRole(this)) { return true; } else { return super.isDisabled(); } } /** *

      Set the value of the immediate property.

      */ public void setImmediate(boolean immediate) { if (immediate != this.immediate) { this.immediate = immediate; } this.immediateSet = true; } /* (non-Javadoc) * @see javax.faces.component.UIComponent#decode(javax.faces.context.FacesContext) */ public void decode(FacesContext context) { super.decode(context); } /** * This method is used to communicate a focus request from the application * to the client browser. */ public void requestFocus() { CoreComponentUtils.setFocusId( "null"); JavascriptContext.focus(FacesContext.getCurrentInstance(), this.getClientId( FacesContext.getCurrentInstance())); } /** *

      Set the value of the focus property.

      */ public void setFocus(boolean focus) { this.focus = focus; } /** *

      Return the value of the focus property.

      */ public boolean hasFocus() { return focus; } private String autocomplete; /** *

      Set the value of the autocomplete property.

      */ public void setAutocomplete(String autocomplete) { this.autocomplete = autocomplete; } /** *

      Return the value of the autocomplete property.

      */ public String getAutocomplete() { if (autocomplete != null) { return autocomplete; } ValueBinding vb = getValueBinding("autocomplete"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy