1 package org.rcfaces.core.internal.taglib;
2
3 import org.rcfaces.core.component.MessageComponent;
4 import javax.faces.application.Application;
5 import javax.faces.component.UIComponent;
6 import org.rcfaces.core.internal.component.Properties;
7 import javax.el.ValueExpression;
8 import javax.faces.component.UIViewRoot;
9 import org.apache.commons.logging.Log;
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 MessageTag extends AbstractMessageTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(MessageTag.class);
20
21 private ValueExpression imageHeight;
22 private ValueExpression imageWidth;
23 private ValueExpression text;
24 private ValueExpression errorStyleClass;
25 private ValueExpression fatalStyleClass;
26 private ValueExpression infoStyleClass;
27 private ValueExpression warnStyleClass;
28 private ValueExpression errorImageURL;
29 private ValueExpression fatalImageURL;
30 private ValueExpression infoImageURL;
31 private ValueExpression warnImageURL;
32 private ValueExpression imageURL;
33 private ValueExpression showIfMessage;
34 private ValueExpression showActiveComponentMessage;
35 public String getComponentType() {
36 return MessageComponent.COMPONENT_TYPE;
37 }
38
39 public final void setImageHeight(ValueExpression imageHeight) {
40 this.imageHeight = imageHeight;
41 }
42
43 public final void setImageWidth(ValueExpression imageWidth) {
44 this.imageWidth = imageWidth;
45 }
46
47 public final void setText(ValueExpression text) {
48 this.text = text;
49 }
50
51 public final void setErrorStyleClass(ValueExpression errorStyleClass) {
52 this.errorStyleClass = errorStyleClass;
53 }
54
55 public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
56 this.fatalStyleClass = fatalStyleClass;
57 }
58
59 public final void setInfoStyleClass(ValueExpression infoStyleClass) {
60 this.infoStyleClass = infoStyleClass;
61 }
62
63 public final void setWarnStyleClass(ValueExpression warnStyleClass) {
64 this.warnStyleClass = warnStyleClass;
65 }
66
67 public final void setErrorImageURL(ValueExpression errorImageURL) {
68 this.errorImageURL = errorImageURL;
69 }
70
71 public final void setFatalImageURL(ValueExpression fatalImageURL) {
72 this.fatalImageURL = fatalImageURL;
73 }
74
75 public final void setInfoImageURL(ValueExpression infoImageURL) {
76 this.infoImageURL = infoImageURL;
77 }
78
79 public final void setWarnImageURL(ValueExpression warnImageURL) {
80 this.warnImageURL = warnImageURL;
81 }
82
83 public final void setImageURL(ValueExpression imageURL) {
84 this.imageURL = imageURL;
85 }
86
87 public final void setShowIfMessage(ValueExpression showIfMessage) {
88 this.showIfMessage = showIfMessage;
89 }
90
91 public final void setShowActiveComponentMessage(ValueExpression showActiveComponentMessage) {
92 this.showActiveComponentMessage = showActiveComponentMessage;
93 }
94
95 protected void setProperties(UIComponent uiComponent) {
96 if (LOG.isDebugEnabled()) {
97 if (MessageComponent.COMPONENT_TYPE==getComponentType()) {
98 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
99 }
100 LOG.debug(" imageHeight='"+imageHeight+"'");
101 LOG.debug(" imageWidth='"+imageWidth+"'");
102 LOG.debug(" text='"+text+"'");
103 LOG.debug(" errorStyleClass='"+errorStyleClass+"'");
104 LOG.debug(" fatalStyleClass='"+fatalStyleClass+"'");
105 LOG.debug(" infoStyleClass='"+infoStyleClass+"'");
106 LOG.debug(" warnStyleClass='"+warnStyleClass+"'");
107 LOG.debug(" errorImageURL='"+errorImageURL+"'");
108 LOG.debug(" fatalImageURL='"+fatalImageURL+"'");
109 LOG.debug(" infoImageURL='"+infoImageURL+"'");
110 LOG.debug(" warnImageURL='"+warnImageURL+"'");
111 LOG.debug(" imageURL='"+imageURL+"'");
112 LOG.debug(" showIfMessage='"+showIfMessage+"'");
113 LOG.debug(" showActiveComponentMessage='"+showActiveComponentMessage+"'");
114 }
115 if ((uiComponent instanceof MessageComponent)==false) {
116 if (uiComponent instanceof UIViewRoot) {
117 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
118 }
119 throw new IllegalStateException("Component specified by tag is not instanceof of 'MessageComponent'.");
120 }
121
122 super.setProperties(uiComponent);
123
124 MessageComponent component = (MessageComponent) uiComponent;
125 FacesContext facesContext = getFacesContext();
126
127 if (imageHeight != null) {
128 if (imageHeight.isLiteralText()==false) {
129 component.setValueExpression(Properties.IMAGE_HEIGHT, imageHeight);
130
131 } else {
132 component.setImageHeight(getInt(imageHeight.getExpressionString()));
133 }
134 }
135
136 if (imageWidth != null) {
137 if (imageWidth.isLiteralText()==false) {
138 component.setValueExpression(Properties.IMAGE_WIDTH, imageWidth);
139
140 } else {
141 component.setImageWidth(getInt(imageWidth.getExpressionString()));
142 }
143 }
144
145 if (text != null) {
146 if (text.isLiteralText()==false) {
147 component.setValueExpression(Properties.TEXT, text);
148
149 } else {
150 component.setText(text.getExpressionString());
151 }
152 }
153
154 if (errorStyleClass != null) {
155 if (errorStyleClass.isLiteralText()==false) {
156 component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
157
158 } else {
159 component.setErrorStyleClass(errorStyleClass.getExpressionString());
160 }
161 }
162
163 if (fatalStyleClass != null) {
164 if (fatalStyleClass.isLiteralText()==false) {
165 component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
166
167 } else {
168 component.setFatalStyleClass(fatalStyleClass.getExpressionString());
169 }
170 }
171
172 if (infoStyleClass != null) {
173 if (infoStyleClass.isLiteralText()==false) {
174 component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
175
176 } else {
177 component.setInfoStyleClass(infoStyleClass.getExpressionString());
178 }
179 }
180
181 if (warnStyleClass != null) {
182 if (warnStyleClass.isLiteralText()==false) {
183 component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
184
185 } else {
186 component.setWarnStyleClass(warnStyleClass.getExpressionString());
187 }
188 }
189
190 if (errorImageURL != null) {
191 if (errorImageURL.isLiteralText()==false) {
192 component.setValueExpression(Properties.ERROR_IMAGE_URL, errorImageURL);
193
194 } else {
195 component.setErrorImageURL(errorImageURL.getExpressionString());
196 }
197 }
198
199 if (fatalImageURL != null) {
200 if (fatalImageURL.isLiteralText()==false) {
201 component.setValueExpression(Properties.FATAL_IMAGE_URL, fatalImageURL);
202
203 } else {
204 component.setFatalImageURL(fatalImageURL.getExpressionString());
205 }
206 }
207
208 if (infoImageURL != null) {
209 if (infoImageURL.isLiteralText()==false) {
210 component.setValueExpression(Properties.INFO_IMAGE_URL, infoImageURL);
211
212 } else {
213 component.setInfoImageURL(infoImageURL.getExpressionString());
214 }
215 }
216
217 if (warnImageURL != null) {
218 if (warnImageURL.isLiteralText()==false) {
219 component.setValueExpression(Properties.WARN_IMAGE_URL, warnImageURL);
220
221 } else {
222 component.setWarnImageURL(warnImageURL.getExpressionString());
223 }
224 }
225
226 if (imageURL != null) {
227 if (imageURL.isLiteralText()==false) {
228 component.setValueExpression(Properties.IMAGE_URL, imageURL);
229
230 } else {
231 component.setImageURL(imageURL.getExpressionString());
232 }
233 }
234
235 if (showIfMessage != null) {
236 if (showIfMessage.isLiteralText()==false) {
237 component.setValueExpression(Properties.SHOW_IF_MESSAGE, showIfMessage);
238
239 } else {
240 component.setShowIfMessage(getBool(showIfMessage.getExpressionString()));
241 }
242 }
243
244 if (showActiveComponentMessage != null) {
245 if (showActiveComponentMessage.isLiteralText()==false) {
246 component.setValueExpression(Properties.SHOW_ACTIVE_COMPONENT_MESSAGE, showActiveComponentMessage);
247
248 } else {
249 component.setShowActiveComponentMessage(getBool(showActiveComponentMessage.getExpressionString()));
250 }
251 }
252 }
253
254 public void release() {
255 imageHeight = null;
256 imageWidth = null;
257 text = null;
258 errorStyleClass = null;
259 fatalStyleClass = null;
260 infoStyleClass = null;
261 warnStyleClass = null;
262 errorImageURL = null;
263 fatalImageURL = null;
264 infoImageURL = null;
265 warnImageURL = null;
266 imageURL = null;
267 showIfMessage = null;
268 showActiveComponentMessage = null;
269
270 super.release();
271 }
272
273 }