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 org.rcfaces.core.component.ExpandBarComponent;
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 ExpandBarTag extends AbstractOutputTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(ExpandBarTag.class);
20
21 private ValueExpression expandListeners;
22 private ValueExpression asyncRenderMode;
23 private ValueExpression fontBold;
24 private ValueExpression fontItalic;
25 private ValueExpression fontName;
26 private ValueExpression fontSize;
27 private ValueExpression fontUnderline;
28 private ValueExpression disabled;
29 private ValueExpression readOnly;
30 private ValueExpression text;
31 private ValueExpression textDirection;
32 private ValueExpression textAlignment;
33 private ValueExpression collapsed;
34 private ValueExpression border;
35 private ValueExpression accessKey;
36 private ValueExpression tabIndex;
37 private ValueExpression groupName;
38 private ValueExpression blurListeners;
39 private ValueExpression focusListeners;
40 private ValueExpression selectionListeners;
41 private ValueExpression loadListeners;
42 private ValueExpression scopeSaveValue;
43 private ValueExpression scopeValue;
44 private ValueExpression scopeVar;
45 private ValueExpression overStyleClass;
46 private ValueExpression collapseEffect;
47 private ValueExpression collapsedText;
48 private ValueExpression userExpandable;
49 public String getComponentType() {
50 return ExpandBarComponent.COMPONENT_TYPE;
51 }
52
53 public final void setExpandListener(ValueExpression expandListeners) {
54 this.expandListeners = expandListeners;
55 }
56
57 public final void setAsyncRenderMode(ValueExpression asyncRenderMode) {
58 this.asyncRenderMode = asyncRenderMode;
59 }
60
61 public final void setFontBold(ValueExpression fontBold) {
62 this.fontBold = fontBold;
63 }
64
65 public final void setFontItalic(ValueExpression fontItalic) {
66 this.fontItalic = fontItalic;
67 }
68
69 public final void setFontName(ValueExpression fontName) {
70 this.fontName = fontName;
71 }
72
73 public final void setFontSize(ValueExpression fontSize) {
74 this.fontSize = fontSize;
75 }
76
77 public final void setFontUnderline(ValueExpression fontUnderline) {
78 this.fontUnderline = fontUnderline;
79 }
80
81 public final void setDisabled(ValueExpression disabled) {
82 this.disabled = disabled;
83 }
84
85 public final void setReadOnly(ValueExpression readOnly) {
86 this.readOnly = readOnly;
87 }
88
89 public final void setText(ValueExpression text) {
90 this.text = text;
91 }
92
93 public final void setTextDirection(ValueExpression textDirection) {
94 this.textDirection = textDirection;
95 }
96
97 public final void setTextAlignment(ValueExpression textAlignment) {
98 this.textAlignment = textAlignment;
99 }
100
101 public final void setCollapsed(ValueExpression collapsed) {
102 this.collapsed = collapsed;
103 }
104
105 public final void setBorder(ValueExpression border) {
106 this.border = border;
107 }
108
109 public final void setAccessKey(ValueExpression accessKey) {
110 this.accessKey = accessKey;
111 }
112
113 public final void setTabIndex(ValueExpression tabIndex) {
114 this.tabIndex = tabIndex;
115 }
116
117 public final void setGroupName(ValueExpression groupName) {
118 this.groupName = groupName;
119 }
120
121 public final void setBlurListener(ValueExpression blurListeners) {
122 this.blurListeners = blurListeners;
123 }
124
125 public final void setFocusListener(ValueExpression focusListeners) {
126 this.focusListeners = focusListeners;
127 }
128
129 public final void setSelectionListener(ValueExpression selectionListeners) {
130 this.selectionListeners = selectionListeners;
131 }
132
133 public final void setLoadListener(ValueExpression loadListeners) {
134 this.loadListeners = loadListeners;
135 }
136
137 public final void setScopeSaveValue(ValueExpression scopeSaveValue) {
138 this.scopeSaveValue = scopeSaveValue;
139 }
140
141 public final void setScopeValue(ValueExpression scopeValue) {
142 this.scopeValue = scopeValue;
143 }
144
145 public final void setScopeVar(ValueExpression scopeVar) {
146 this.scopeVar = scopeVar;
147 }
148
149 public final void setOverStyleClass(ValueExpression overStyleClass) {
150 this.overStyleClass = overStyleClass;
151 }
152
153 public final void setCollapseEffect(ValueExpression collapseEffect) {
154 this.collapseEffect = collapseEffect;
155 }
156
157 public final void setCollapsedText(ValueExpression collapsedText) {
158 this.collapsedText = collapsedText;
159 }
160
161 public final void setUserExpandable(ValueExpression userExpandable) {
162 this.userExpandable = userExpandable;
163 }
164
165 protected void setProperties(UIComponent uiComponent) {
166 if (LOG.isDebugEnabled()) {
167 if (ExpandBarComponent.COMPONENT_TYPE==getComponentType()) {
168 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
169 }
170 LOG.debug(" asyncRenderMode='"+asyncRenderMode+"'");
171 LOG.debug(" fontBold='"+fontBold+"'");
172 LOG.debug(" fontItalic='"+fontItalic+"'");
173 LOG.debug(" fontName='"+fontName+"'");
174 LOG.debug(" fontSize='"+fontSize+"'");
175 LOG.debug(" fontUnderline='"+fontUnderline+"'");
176 LOG.debug(" disabled='"+disabled+"'");
177 LOG.debug(" readOnly='"+readOnly+"'");
178 LOG.debug(" text='"+text+"'");
179 LOG.debug(" textDirection='"+textDirection+"'");
180 LOG.debug(" textAlignment='"+textAlignment+"'");
181 LOG.debug(" collapsed='"+collapsed+"'");
182 LOG.debug(" border='"+border+"'");
183 LOG.debug(" accessKey='"+accessKey+"'");
184 LOG.debug(" tabIndex='"+tabIndex+"'");
185 LOG.debug(" groupName='"+groupName+"'");
186 LOG.debug(" scopeSaveValue='"+scopeSaveValue+"'");
187 LOG.debug(" scopeValue='"+scopeValue+"'");
188 LOG.debug(" scopeVar='"+scopeVar+"'");
189 LOG.debug(" overStyleClass='"+overStyleClass+"'");
190 LOG.debug(" collapseEffect='"+collapseEffect+"'");
191 LOG.debug(" collapsedText='"+collapsedText+"'");
192 LOG.debug(" userExpandable='"+userExpandable+"'");
193 }
194 if ((uiComponent instanceof ExpandBarComponent)==false) {
195 if (uiComponent instanceof UIViewRoot) {
196 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
197 }
198 throw new IllegalStateException("Component specified by tag is not instanceof of 'ExpandBarComponent'.");
199 }
200
201 super.setProperties(uiComponent);
202
203 ExpandBarComponent component = (ExpandBarComponent) uiComponent;
204 FacesContext facesContext = getFacesContext();
205
206 if (expandListeners != null) {
207 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.EXPAND_LISTENER_TYPE, expandListeners);
208 }
209
210 if (asyncRenderMode != null) {
211 if (asyncRenderMode.isLiteralText()==false) {
212 component.setValueExpression(Properties.ASYNC_RENDER_MODE, asyncRenderMode);
213
214 } else {
215 component.setAsyncRenderMode(asyncRenderMode.getExpressionString());
216 }
217 }
218
219 if (fontBold != null) {
220 if (fontBold.isLiteralText()==false) {
221 component.setValueExpression(Properties.FONT_BOLD, fontBold);
222
223 } else {
224 component.setFontBold(getBoolean(fontBold.getExpressionString()));
225 }
226 }
227
228 if (fontItalic != null) {
229 if (fontItalic.isLiteralText()==false) {
230 component.setValueExpression(Properties.FONT_ITALIC, fontItalic);
231
232 } else {
233 component.setFontItalic(getBoolean(fontItalic.getExpressionString()));
234 }
235 }
236
237 if (fontName != null) {
238 if (fontName.isLiteralText()==false) {
239 component.setValueExpression(Properties.FONT_NAME, fontName);
240
241 } else {
242 component.setFontName(fontName.getExpressionString());
243 }
244 }
245
246 if (fontSize != null) {
247 if (fontSize.isLiteralText()==false) {
248 component.setValueExpression(Properties.FONT_SIZE, fontSize);
249
250 } else {
251 component.setFontSize(fontSize.getExpressionString());
252 }
253 }
254
255 if (fontUnderline != null) {
256 if (fontUnderline.isLiteralText()==false) {
257 component.setValueExpression(Properties.FONT_UNDERLINE, fontUnderline);
258
259 } else {
260 component.setFontUnderline(getBoolean(fontUnderline.getExpressionString()));
261 }
262 }
263
264 if (disabled != null) {
265 if (disabled.isLiteralText()==false) {
266 component.setValueExpression(Properties.DISABLED, disabled);
267
268 } else {
269 component.setDisabled(getBool(disabled.getExpressionString()));
270 }
271 }
272
273 if (readOnly != null) {
274 if (readOnly.isLiteralText()==false) {
275 component.setValueExpression(Properties.READ_ONLY, readOnly);
276
277 } else {
278 component.setReadOnly(getBool(readOnly.getExpressionString()));
279 }
280 }
281
282 if (text != null) {
283 if (text.isLiteralText()==false) {
284 component.setValueExpression(Properties.TEXT, text);
285
286 } else {
287 component.setText(text.getExpressionString());
288 }
289 }
290
291 if (textDirection != null) {
292 if (textDirection.isLiteralText()==false) {
293 component.setValueExpression(Properties.TEXT_DIRECTION, textDirection);
294
295 } else {
296 component.setTextDirection(getInt(textDirection.getExpressionString()));
297 }
298 }
299
300 if (textAlignment != null) {
301 if (textAlignment.isLiteralText()==false) {
302 component.setValueExpression(Properties.TEXT_ALIGNMENT, textAlignment);
303
304 } else {
305 component.setTextAlignment(textAlignment.getExpressionString());
306 }
307 }
308
309 if (collapsed != null) {
310 if (collapsed.isLiteralText()==false) {
311 component.setValueExpression(Properties.COLLAPSED, collapsed);
312
313 } else {
314 component.setCollapsed(getBool(collapsed.getExpressionString()));
315 }
316 }
317
318 if (border != null) {
319 if (border.isLiteralText()==false) {
320 component.setValueExpression(Properties.BORDER, border);
321
322 } else {
323 component.setBorder(getBool(border.getExpressionString()));
324 }
325 }
326
327 if (accessKey != null) {
328 if (accessKey.isLiteralText()==false) {
329 component.setValueExpression(Properties.ACCESS_KEY, accessKey);
330
331 } else {
332 component.setAccessKey(accessKey.getExpressionString());
333 }
334 }
335
336 if (tabIndex != null) {
337 if (tabIndex.isLiteralText()==false) {
338 component.setValueExpression(Properties.TAB_INDEX, tabIndex);
339
340 } else {
341 component.setTabIndex(getInteger(tabIndex.getExpressionString()));
342 }
343 }
344
345 if (groupName != null) {
346 if (groupName.isLiteralText()==false) {
347 component.setValueExpression(Properties.GROUP_NAME, groupName);
348
349 } else {
350 component.setGroupName(groupName.getExpressionString());
351 }
352 }
353
354 if (blurListeners != null) {
355 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.BLUR_LISTENER_TYPE, blurListeners);
356 }
357
358 if (focusListeners != null) {
359 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.FOCUS_LISTENER_TYPE, focusListeners);
360 }
361
362 if (selectionListeners != null) {
363 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
364 }
365
366 if (loadListeners != null) {
367 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.LOAD_LISTENER_TYPE, loadListeners);
368 }
369
370 if (scopeSaveValue != null) {
371 if (scopeSaveValue.isLiteralText()==false) {
372 component.setValueExpression(Properties.SCOPE_SAVE_VALUE, scopeSaveValue);
373
374 } else {
375 component.setScopeSaveValue(getBool(scopeSaveValue.getExpressionString()));
376 }
377 }
378
379 if (scopeValue != null) {
380 if (scopeValue.isLiteralText()==false) {
381 component.setValueExpression(Properties.SCOPE_VALUE, scopeValue);
382
383 } else {
384 component.setScopeValue(scopeValue.getExpressionString());
385 }
386 }
387
388 if (scopeVar != null) {
389 if (scopeVar.isLiteralText()==false) {
390 component.setValueExpression(Properties.SCOPE_VAR, scopeVar);
391
392 } else {
393 component.setScopeVar(scopeVar.getExpressionString());
394 }
395 }
396
397 if (overStyleClass != null) {
398 if (overStyleClass.isLiteralText()==false) {
399 component.setValueExpression(Properties.OVER_STYLE_CLASS, overStyleClass);
400
401 } else {
402 component.setOverStyleClass(overStyleClass.getExpressionString());
403 }
404 }
405
406 if (collapseEffect != null) {
407 if (collapseEffect.isLiteralText()==false) {
408 component.setValueExpression(Properties.COLLAPSE_EFFECT, collapseEffect);
409
410 } else {
411 component.setCollapseEffect(collapseEffect.getExpressionString());
412 }
413 }
414
415 if (collapsedText != null) {
416 if (collapsedText.isLiteralText()==false) {
417 component.setValueExpression(Properties.COLLAPSED_TEXT, collapsedText);
418
419 } else {
420 component.setCollapsedText(collapsedText.getExpressionString());
421 }
422 }
423
424 if (userExpandable != null) {
425 if (userExpandable.isLiteralText()==false) {
426 component.setValueExpression(Properties.USER_EXPANDABLE, userExpandable);
427
428 } else {
429 component.setUserExpandable(getBool(userExpandable.getExpressionString()));
430 }
431 }
432 }
433
434 public void release() {
435 expandListeners = null;
436 asyncRenderMode = null;
437 fontBold = null;
438 fontItalic = null;
439 fontName = null;
440 fontSize = null;
441 fontUnderline = null;
442 disabled = null;
443 readOnly = null;
444 text = null;
445 textDirection = null;
446 textAlignment = null;
447 collapsed = null;
448 border = null;
449 accessKey = null;
450 tabIndex = null;
451 groupName = null;
452 blurListeners = null;
453 focusListeners = null;
454 selectionListeners = null;
455 loadListeners = null;
456 scopeSaveValue = null;
457 scopeValue = null;
458 scopeVar = null;
459 overStyleClass = null;
460 collapseEffect = null;
461 collapsedText = null;
462 userExpandable = null;
463
464 super.release();
465 }
466
467 }