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.CheckButtonComponent;
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 CheckButtonTag extends AbstractInputTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(CheckButtonTag.class);
20  
21  	private ValueExpression text;
22  	private ValueExpression textDirection;
23  	private ValueExpression textPosition;
24  	private ValueExpression selectionListeners;
25  	private ValueExpression readOnly;
26  	private ValueExpression alternateText;
27  	private ValueExpression focusStyleClass;
28  	private ValueExpression errorStyleClass;
29  	private ValueExpression fatalStyleClass;
30  	private ValueExpression infoStyleClass;
31  	private ValueExpression warnStyleClass;
32  	private ValueExpression selected;
33  	public String getComponentType() {
34  		return CheckButtonComponent.COMPONENT_TYPE;
35  	}
36  
37  	public final void setText(ValueExpression text) {
38  		this.text = text;
39  	}
40  
41  	public final void setTextDirection(ValueExpression textDirection) {
42  		this.textDirection = textDirection;
43  	}
44  
45  	public final void setTextPosition(ValueExpression textPosition) {
46  		this.textPosition = textPosition;
47  	}
48  
49  	public final void setSelectionListener(ValueExpression selectionListeners) {
50  		this.selectionListeners = selectionListeners;
51  	}
52  
53  	public final void setReadOnly(ValueExpression readOnly) {
54  		this.readOnly = readOnly;
55  	}
56  
57  	public final void setAlternateText(ValueExpression alternateText) {
58  		this.alternateText = alternateText;
59  	}
60  
61  	public final void setFocusStyleClass(ValueExpression focusStyleClass) {
62  		this.focusStyleClass = focusStyleClass;
63  	}
64  
65  	public final void setErrorStyleClass(ValueExpression errorStyleClass) {
66  		this.errorStyleClass = errorStyleClass;
67  	}
68  
69  	public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
70  		this.fatalStyleClass = fatalStyleClass;
71  	}
72  
73  	public final void setInfoStyleClass(ValueExpression infoStyleClass) {
74  		this.infoStyleClass = infoStyleClass;
75  	}
76  
77  	public final void setWarnStyleClass(ValueExpression warnStyleClass) {
78  		this.warnStyleClass = warnStyleClass;
79  	}
80  
81  	public final void setSelected(ValueExpression selected) {
82  		this.selected = selected;
83  	}
84  
85  	protected void setProperties(UIComponent uiComponent) {
86  		if (LOG.isDebugEnabled()) {
87  			if (CheckButtonComponent.COMPONENT_TYPE==getComponentType()) {
88  				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
89  			}
90  			LOG.debug("  text='"+text+"'");
91  			LOG.debug("  textDirection='"+textDirection+"'");
92  			LOG.debug("  textPosition='"+textPosition+"'");
93  			LOG.debug("  readOnly='"+readOnly+"'");
94  			LOG.debug("  alternateText='"+alternateText+"'");
95  			LOG.debug("  focusStyleClass='"+focusStyleClass+"'");
96  			LOG.debug("  errorStyleClass='"+errorStyleClass+"'");
97  			LOG.debug("  fatalStyleClass='"+fatalStyleClass+"'");
98  			LOG.debug("  infoStyleClass='"+infoStyleClass+"'");
99  			LOG.debug("  warnStyleClass='"+warnStyleClass+"'");
100 			LOG.debug("  selected='"+selected+"'");
101 		}
102 		if ((uiComponent instanceof CheckButtonComponent)==false) {
103 			if (uiComponent instanceof UIViewRoot) {
104 				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
105 			}
106 			throw new IllegalStateException("Component specified by tag is not instanceof of 'CheckButtonComponent'.");
107 		}
108 
109 		super.setProperties(uiComponent);
110 
111 		CheckButtonComponent component = (CheckButtonComponent) uiComponent;
112 		FacesContext facesContext = getFacesContext();
113 
114 		if (text != null) {
115 			if (text.isLiteralText()==false) {
116 				component.setValueExpression(Properties.TEXT, text);
117 
118 			} else {
119 				component.setText(text.getExpressionString());
120 			}
121 		}
122 
123 		if (textDirection != null) {
124 			if (textDirection.isLiteralText()==false) {
125 				component.setValueExpression(Properties.TEXT_DIRECTION, textDirection);
126 
127 			} else {
128 				component.setTextDirection(getInt(textDirection.getExpressionString()));
129 			}
130 		}
131 
132 		if (textPosition != null) {
133 			if (textPosition.isLiteralText()==false) {
134 				component.setValueExpression(Properties.TEXT_POSITION, textPosition);
135 
136 			} else {
137 				component.setTextPosition(textPosition.getExpressionString());
138 			}
139 		}
140 
141 		if (selectionListeners != null) {
142 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
143 		}
144 
145 		if (readOnly != null) {
146 			if (readOnly.isLiteralText()==false) {
147 				component.setValueExpression(Properties.READ_ONLY, readOnly);
148 
149 			} else {
150 				component.setReadOnly(getBool(readOnly.getExpressionString()));
151 			}
152 		}
153 
154 		if (alternateText != null) {
155 			if (alternateText.isLiteralText()==false) {
156 				component.setValueExpression(Properties.ALTERNATE_TEXT, alternateText);
157 
158 			} else {
159 				component.setAlternateText(alternateText.getExpressionString());
160 			}
161 		}
162 
163 		if (focusStyleClass != null) {
164 			if (focusStyleClass.isLiteralText()==false) {
165 				component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
166 
167 			} else {
168 				component.setFocusStyleClass(focusStyleClass.getExpressionString());
169 			}
170 		}
171 
172 		if (errorStyleClass != null) {
173 			if (errorStyleClass.isLiteralText()==false) {
174 				component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
175 
176 			} else {
177 				component.setErrorStyleClass(errorStyleClass.getExpressionString());
178 			}
179 		}
180 
181 		if (fatalStyleClass != null) {
182 			if (fatalStyleClass.isLiteralText()==false) {
183 				component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
184 
185 			} else {
186 				component.setFatalStyleClass(fatalStyleClass.getExpressionString());
187 			}
188 		}
189 
190 		if (infoStyleClass != null) {
191 			if (infoStyleClass.isLiteralText()==false) {
192 				component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
193 
194 			} else {
195 				component.setInfoStyleClass(infoStyleClass.getExpressionString());
196 			}
197 		}
198 
199 		if (warnStyleClass != null) {
200 			if (warnStyleClass.isLiteralText()==false) {
201 				component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
202 
203 			} else {
204 				component.setWarnStyleClass(warnStyleClass.getExpressionString());
205 			}
206 		}
207 
208 		if (selected != null) {
209 			if (selected.isLiteralText()==false) {
210 				component.setValueExpression(Properties.SELECTED, selected);
211 
212 			} else {
213 				component.setSelected(getBool(selected.getExpressionString()));
214 			}
215 		}
216 	}
217 
218 	public void release() {
219 		text = null;
220 		textDirection = null;
221 		textPosition = null;
222 		selectionListeners = null;
223 		readOnly = null;
224 		alternateText = null;
225 		focusStyleClass = null;
226 		errorStyleClass = null;
227 		fatalStyleClass = null;
228 		infoStyleClass = null;
229 		warnStyleClass = null;
230 		selected = null;
231 
232 		super.release();
233 	}
234 
235 }