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 }