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 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 }