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 javax.servlet.jsp.tagext.Tag;
10 import org.apache.commons.logging.LogFactory;
11 import org.rcfaces.core.component.MessageFieldSetComponent;
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 MessageFieldSetTag extends FieldSetTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(MessageFieldSetTag.class);
20
21 private ValueExpression forValue;
22 private ValueExpression errorStyleClass;
23 private ValueExpression fatalStyleClass;
24 private ValueExpression infoStyleClass;
25 private ValueExpression warnStyleClass;
26 private ValueExpression errorImageURL;
27 private ValueExpression fatalImageURL;
28 private ValueExpression infoImageURL;
29 private ValueExpression warnImageURL;
30 private ValueExpression setFocusIfMessage;
31 private ValueExpression showActiveComponentMessage;
32 public String getComponentType() {
33 return MessageFieldSetComponent.COMPONENT_TYPE;
34 }
35
36 public final void setFor(ValueExpression forValue) {
37 this.forValue = forValue;
38 }
39
40 public final void setErrorStyleClass(ValueExpression errorStyleClass) {
41 this.errorStyleClass = errorStyleClass;
42 }
43
44 public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
45 this.fatalStyleClass = fatalStyleClass;
46 }
47
48 public final void setInfoStyleClass(ValueExpression infoStyleClass) {
49 this.infoStyleClass = infoStyleClass;
50 }
51
52 public final void setWarnStyleClass(ValueExpression warnStyleClass) {
53 this.warnStyleClass = warnStyleClass;
54 }
55
56 public final void setErrorImageURL(ValueExpression errorImageURL) {
57 this.errorImageURL = errorImageURL;
58 }
59
60 public final void setFatalImageURL(ValueExpression fatalImageURL) {
61 this.fatalImageURL = fatalImageURL;
62 }
63
64 public final void setInfoImageURL(ValueExpression infoImageURL) {
65 this.infoImageURL = infoImageURL;
66 }
67
68 public final void setWarnImageURL(ValueExpression warnImageURL) {
69 this.warnImageURL = warnImageURL;
70 }
71
72 public final void setSetFocusIfMessage(ValueExpression setFocusIfMessage) {
73 this.setFocusIfMessage = setFocusIfMessage;
74 }
75
76 public final void setShowActiveComponentMessage(ValueExpression showActiveComponentMessage) {
77 this.showActiveComponentMessage = showActiveComponentMessage;
78 }
79
80 protected void setProperties(UIComponent uiComponent) {
81 if (LOG.isDebugEnabled()) {
82 if (MessageFieldSetComponent.COMPONENT_TYPE==getComponentType()) {
83 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
84 }
85 LOG.debug(" forValue='"+forValue+"'");
86 LOG.debug(" errorStyleClass='"+errorStyleClass+"'");
87 LOG.debug(" fatalStyleClass='"+fatalStyleClass+"'");
88 LOG.debug(" infoStyleClass='"+infoStyleClass+"'");
89 LOG.debug(" warnStyleClass='"+warnStyleClass+"'");
90 LOG.debug(" errorImageURL='"+errorImageURL+"'");
91 LOG.debug(" fatalImageURL='"+fatalImageURL+"'");
92 LOG.debug(" infoImageURL='"+infoImageURL+"'");
93 LOG.debug(" warnImageURL='"+warnImageURL+"'");
94 LOG.debug(" setFocusIfMessage='"+setFocusIfMessage+"'");
95 LOG.debug(" showActiveComponentMessage='"+showActiveComponentMessage+"'");
96 }
97 if ((uiComponent instanceof MessageFieldSetComponent)==false) {
98 if (uiComponent instanceof UIViewRoot) {
99 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
100 }
101 throw new IllegalStateException("Component specified by tag is not instanceof of 'MessageFieldSetComponent'.");
102 }
103
104 super.setProperties(uiComponent);
105
106 MessageFieldSetComponent component = (MessageFieldSetComponent) uiComponent;
107 FacesContext facesContext = getFacesContext();
108
109 if (forValue != null) {
110 if (forValue.isLiteralText()==false) {
111 component.setValueExpression(Properties.FOR, forValue);
112
113 } else {
114 component.setFor(forValue.getExpressionString());
115 }
116 }
117
118 if (errorStyleClass != null) {
119 if (errorStyleClass.isLiteralText()==false) {
120 component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
121
122 } else {
123 component.setErrorStyleClass(errorStyleClass.getExpressionString());
124 }
125 }
126
127 if (fatalStyleClass != null) {
128 if (fatalStyleClass.isLiteralText()==false) {
129 component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
130
131 } else {
132 component.setFatalStyleClass(fatalStyleClass.getExpressionString());
133 }
134 }
135
136 if (infoStyleClass != null) {
137 if (infoStyleClass.isLiteralText()==false) {
138 component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
139
140 } else {
141 component.setInfoStyleClass(infoStyleClass.getExpressionString());
142 }
143 }
144
145 if (warnStyleClass != null) {
146 if (warnStyleClass.isLiteralText()==false) {
147 component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
148
149 } else {
150 component.setWarnStyleClass(warnStyleClass.getExpressionString());
151 }
152 }
153
154 if (errorImageURL != null) {
155 if (errorImageURL.isLiteralText()==false) {
156 component.setValueExpression(Properties.ERROR_IMAGE_URL, errorImageURL);
157
158 } else {
159 component.setErrorImageURL(errorImageURL.getExpressionString());
160 }
161 }
162
163 if (fatalImageURL != null) {
164 if (fatalImageURL.isLiteralText()==false) {
165 component.setValueExpression(Properties.FATAL_IMAGE_URL, fatalImageURL);
166
167 } else {
168 component.setFatalImageURL(fatalImageURL.getExpressionString());
169 }
170 }
171
172 if (infoImageURL != null) {
173 if (infoImageURL.isLiteralText()==false) {
174 component.setValueExpression(Properties.INFO_IMAGE_URL, infoImageURL);
175
176 } else {
177 component.setInfoImageURL(infoImageURL.getExpressionString());
178 }
179 }
180
181 if (warnImageURL != null) {
182 if (warnImageURL.isLiteralText()==false) {
183 component.setValueExpression(Properties.WARN_IMAGE_URL, warnImageURL);
184
185 } else {
186 component.setWarnImageURL(warnImageURL.getExpressionString());
187 }
188 }
189
190 if (setFocusIfMessage != null) {
191 if (setFocusIfMessage.isLiteralText()==false) {
192 component.setValueExpression(Properties.SET_FOCUS_IF_MESSAGE, setFocusIfMessage);
193
194 } else {
195 component.setSetFocusIfMessage(getBool(setFocusIfMessage.getExpressionString()));
196 }
197 }
198
199 if (showActiveComponentMessage != null) {
200 if (showActiveComponentMessage.isLiteralText()==false) {
201 component.setValueExpression(Properties.SHOW_ACTIVE_COMPONENT_MESSAGE, showActiveComponentMessage);
202
203 } else {
204 component.setShowActiveComponentMessage(getBool(showActiveComponentMessage.getExpressionString()));
205 }
206 }
207 }
208
209 public void release() {
210 forValue = null;
211 errorStyleClass = null;
212 fatalStyleClass = null;
213 infoStyleClass = null;
214 warnStyleClass = null;
215 errorImageURL = null;
216 fatalImageURL = null;
217 infoImageURL = null;
218 warnImageURL = null;
219 setFocusIfMessage = null;
220 showActiveComponentMessage = null;
221
222 super.release();
223 }
224
225 }