View Javadoc

1   package org.rcfaces.core.internal.taglib;
2   
3   import javax.faces.application.Application;
4   import javax.faces.component.UIComponent;
5   import org.rcfaces.core.internal.component.Properties;
6   import javax.el.ValueExpression;
7   import javax.faces.component.UIViewRoot;
8   import org.apache.commons.logging.Log;
9   import org.rcfaces.core.component.HiddenValueComponent;
10  import javax.servlet.jsp.tagext.Tag;
11  import org.apache.commons.logging.LogFactory;
12  import org.rcfaces.core.internal.tools.ListenersTools1_2;
13  import org.rcfaces.core.internal.tools.ListenersTools;
14  import javax.faces.context.FacesContext;
15  
16  public class HiddenValueTag extends CameliaTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(HiddenValueTag.class);
20  
21  	private ValueExpression propertyChangeListeners;
22  	private ValueExpression immediate;
23  	private ValueExpression valueLocked;
24  	private ValueExpression validationListeners;
25  	private ValueExpression userEventListeners;
26  	private ValueExpression value;
27  	private ValueExpression converter;
28  	public String getComponentType() {
29  		return HiddenValueComponent.COMPONENT_TYPE;
30  	}
31  
32  	public final void setPropertyChangeListener(ValueExpression propertyChangeListeners) {
33  		this.propertyChangeListeners = propertyChangeListeners;
34  	}
35  
36  	public final void setImmediate(ValueExpression immediate) {
37  		this.immediate = immediate;
38  	}
39  
40  	public final void setValueLocked(ValueExpression valueLocked) {
41  		this.valueLocked = valueLocked;
42  	}
43  
44  	public final void setValidationListener(ValueExpression validationListeners) {
45  		this.validationListeners = validationListeners;
46  	}
47  
48  	public final void setUserEventListener(ValueExpression userEventListeners) {
49  		this.userEventListeners = userEventListeners;
50  	}
51  
52  	public final void setValue(ValueExpression value) {
53  		this.value = value;
54  	}
55  
56  	public final void setConverter(ValueExpression converter) {
57  		this.converter = converter;
58  	}
59  
60  	protected void setProperties(UIComponent uiComponent) {
61  		if (LOG.isDebugEnabled()) {
62  			if (HiddenValueComponent.COMPONENT_TYPE==getComponentType()) {
63  				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
64  			}
65  			LOG.debug("  immediate='"+immediate+"'");
66  			LOG.debug("  valueLocked='"+valueLocked+"'");
67  		}
68  		if ((uiComponent instanceof HiddenValueComponent)==false) {
69  			if (uiComponent instanceof UIViewRoot) {
70  				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
71  			}
72  			throw new IllegalStateException("Component specified by tag is not instanceof of 'HiddenValueComponent'.");
73  		}
74  
75  		super.setProperties(uiComponent);
76  
77  		HiddenValueComponent component = (HiddenValueComponent) uiComponent;
78  		FacesContext facesContext = getFacesContext();
79  
80  		if (propertyChangeListeners != null) {
81  			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.PROPERTY_CHANGE_LISTENER_TYPE, propertyChangeListeners);
82  		}
83  
84  		if (immediate != null) {
85  			if (immediate.isLiteralText()==false) {
86  				component.setValueExpression(Properties.IMMEDIATE, immediate);
87  
88  			} else {
89  				component.setImmediate(getBool(immediate.getExpressionString()));
90  			}
91  		}
92  
93  		if (valueLocked != null) {
94  			if (valueLocked.isLiteralText()==false) {
95  				component.setValueExpression(Properties.VALUE_LOCKED, valueLocked);
96  
97  			} else {
98  				component.setValueLocked(getBool(valueLocked.getExpressionString()));
99  			}
100 		}
101 
102 		if (validationListeners != null) {
103 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.VALIDATION_LISTENER_TYPE, validationListeners);
104 		}
105 
106 		if (userEventListeners != null) {
107 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.USER_EVENT_LISTENER_TYPE, userEventListeners);
108 		}
109 
110 		if (value != null) {
111 			if (value.isLiteralText()==false) {
112 				component.setValueExpression(Properties.VALUE, value);
113 
114 			} else {
115 				component.setValue(value.getExpressionString());
116 			}
117 		}
118 
119 		if (converter != null) {
120 			if (converter.isLiteralText()==false) {
121 				component.setValueExpression(Properties.CONVERTER, converter);
122 
123 			} else {
124 				component.setConverter(converter.getExpressionString());
125 			}
126 		}
127 	}
128 
129 	public void release() {
130 		propertyChangeListeners = null;
131 		immediate = null;
132 		valueLocked = null;
133 		validationListeners = null;
134 		userEventListeners = null;
135 		value = null;
136 		converter = null;
137 
138 		super.release();
139 	}
140 
141 }