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 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.internal.tools.ListenersTools1_2;
12  import org.rcfaces.core.component.DateEntryComponent;
13  import org.rcfaces.core.internal.tools.ListenersTools;
14  import javax.faces.context.FacesContext;
15  
16  public class DateEntryTag extends AbstractCalendarTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(DateEntryTag.class);
20  
21  	private ValueExpression required;
22  	private ValueExpression autoTab;
23  	private ValueExpression valueChangeListeners;
24  	private ValueExpression focusStyleClass;
25  	private ValueExpression errorStyleClass;
26  	private ValueExpression fatalStyleClass;
27  	private ValueExpression infoStyleClass;
28  	private ValueExpression warnStyleClass;
29  	private ValueExpression dateFormat;
30  	private ValueExpression showCalendarOnFocus;
31  	private ValueExpression autoCompletion;
32  	private ValueExpression defaultDate;
33  	private ValueExpression actionListeners;
34  	private ValueExpression action;
35  	public String getComponentType() {
36  		return DateEntryComponent.COMPONENT_TYPE;
37  	}
38  
39  	public final void setRequired(ValueExpression required) {
40  		this.required = required;
41  	}
42  
43  	public final void setAutoTab(ValueExpression autoTab) {
44  		this.autoTab = autoTab;
45  	}
46  
47  	public final void setValueChangeListener(ValueExpression valueChangeListeners) {
48  		this.valueChangeListeners = valueChangeListeners;
49  	}
50  
51  	public final void setFocusStyleClass(ValueExpression focusStyleClass) {
52  		this.focusStyleClass = focusStyleClass;
53  	}
54  
55  	public final void setErrorStyleClass(ValueExpression errorStyleClass) {
56  		this.errorStyleClass = errorStyleClass;
57  	}
58  
59  	public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
60  		this.fatalStyleClass = fatalStyleClass;
61  	}
62  
63  	public final void setInfoStyleClass(ValueExpression infoStyleClass) {
64  		this.infoStyleClass = infoStyleClass;
65  	}
66  
67  	public final void setWarnStyleClass(ValueExpression warnStyleClass) {
68  		this.warnStyleClass = warnStyleClass;
69  	}
70  
71  	public final void setDateFormat(ValueExpression dateFormat) {
72  		this.dateFormat = dateFormat;
73  	}
74  
75  	public final void setShowCalendarOnFocus(ValueExpression showCalendarOnFocus) {
76  		this.showCalendarOnFocus = showCalendarOnFocus;
77  	}
78  
79  	public final void setAutoCompletion(ValueExpression autoCompletion) {
80  		this.autoCompletion = autoCompletion;
81  	}
82  
83  	public final void setDefaultDate(ValueExpression defaultDate) {
84  		this.defaultDate = defaultDate;
85  	}
86  
87  	public final void setAction(ValueExpression action) {
88  		this.action=action;
89  	}
90  
91  	public final void setActionListener(ValueExpression listeners) {
92  		this.actionListeners = listeners;
93  	}
94  
95  	protected void setProperties(UIComponent uiComponent) {
96  		if (LOG.isDebugEnabled()) {
97  			if (DateEntryComponent.COMPONENT_TYPE==getComponentType()) {
98  				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
99  			}
100 			LOG.debug("  required='"+required+"'");
101 			LOG.debug("  autoTab='"+autoTab+"'");
102 			LOG.debug("  focusStyleClass='"+focusStyleClass+"'");
103 			LOG.debug("  errorStyleClass='"+errorStyleClass+"'");
104 			LOG.debug("  fatalStyleClass='"+fatalStyleClass+"'");
105 			LOG.debug("  infoStyleClass='"+infoStyleClass+"'");
106 			LOG.debug("  warnStyleClass='"+warnStyleClass+"'");
107 			LOG.debug("  dateFormat='"+dateFormat+"'");
108 			LOG.debug("  showCalendarOnFocus='"+showCalendarOnFocus+"'");
109 			LOG.debug("  autoCompletion='"+autoCompletion+"'");
110 			LOG.debug("  defaultDate='"+defaultDate+"'");
111 			LOG.debug("  action='"+action+"'");
112 			LOG.debug("  actionListeners='"+actionListeners+"'");
113 		}
114 		if ((uiComponent instanceof DateEntryComponent)==false) {
115 			if (uiComponent instanceof UIViewRoot) {
116 				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
117 			}
118 			throw new IllegalStateException("Component specified by tag is not instanceof of 'DateEntryComponent'.");
119 		}
120 
121 		super.setProperties(uiComponent);
122 
123 		DateEntryComponent component = (DateEntryComponent) uiComponent;
124 		FacesContext facesContext = getFacesContext();
125 
126 		if (required != null) {
127 			if (required.isLiteralText()==false) {
128 				component.setValueExpression(Properties.REQUIRED, required);
129 
130 			} else {
131 				component.setRequired(getBool(required.getExpressionString()));
132 			}
133 		}
134 
135 		if (autoTab != null) {
136 			if (autoTab.isLiteralText()==false) {
137 				component.setValueExpression(Properties.AUTO_TAB, autoTab);
138 
139 			} else {
140 				component.setAutoTab(getBool(autoTab.getExpressionString()));
141 			}
142 		}
143 
144 		if (valueChangeListeners != null) {
145 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.VALUE_CHANGE_LISTENER_TYPE, valueChangeListeners);
146 		}
147 
148 		if (focusStyleClass != null) {
149 			if (focusStyleClass.isLiteralText()==false) {
150 				component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
151 
152 			} else {
153 				component.setFocusStyleClass(focusStyleClass.getExpressionString());
154 			}
155 		}
156 
157 		if (errorStyleClass != null) {
158 			if (errorStyleClass.isLiteralText()==false) {
159 				component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
160 
161 			} else {
162 				component.setErrorStyleClass(errorStyleClass.getExpressionString());
163 			}
164 		}
165 
166 		if (fatalStyleClass != null) {
167 			if (fatalStyleClass.isLiteralText()==false) {
168 				component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
169 
170 			} else {
171 				component.setFatalStyleClass(fatalStyleClass.getExpressionString());
172 			}
173 		}
174 
175 		if (infoStyleClass != null) {
176 			if (infoStyleClass.isLiteralText()==false) {
177 				component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
178 
179 			} else {
180 				component.setInfoStyleClass(infoStyleClass.getExpressionString());
181 			}
182 		}
183 
184 		if (warnStyleClass != null) {
185 			if (warnStyleClass.isLiteralText()==false) {
186 				component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
187 
188 			} else {
189 				component.setWarnStyleClass(warnStyleClass.getExpressionString());
190 			}
191 		}
192 
193 		if (dateFormat != null) {
194 			if (dateFormat.isLiteralText()==false) {
195 				component.setValueExpression(Properties.DATE_FORMAT, dateFormat);
196 
197 			} else {
198 				component.setDateFormat(dateFormat.getExpressionString());
199 			}
200 		}
201 
202 		if (showCalendarOnFocus != null) {
203 			if (showCalendarOnFocus.isLiteralText()==false) {
204 				component.setValueExpression(Properties.SHOW_CALENDAR_ON_FOCUS, showCalendarOnFocus);
205 
206 			} else {
207 				component.setShowCalendarOnFocus(getBool(showCalendarOnFocus.getExpressionString()));
208 			}
209 		}
210 
211 		if (autoCompletion != null) {
212 			if (autoCompletion.isLiteralText()==false) {
213 				component.setValueExpression(Properties.AUTO_COMPLETION, autoCompletion);
214 
215 			} else {
216 				component.setAutoCompletion(getBool(autoCompletion.getExpressionString()));
217 			}
218 		}
219 
220 		if (defaultDate != null) {
221 			if (defaultDate.isLiteralText()==false) {
222 				component.setValueExpression(Properties.DEFAULT_DATE, defaultDate);
223 
224 			} else {
225 				component.setDefaultDate(defaultDate.getExpressionString());
226 			}
227 		}
228 
229 		if (action != null) {
230 			ListenersTools1_2.parseAction(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, action);
231 		}
232 
233 		if (actionListeners != null) {
234 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, actionListeners, true);
235 		}
236 	}
237 
238 	public void release() {
239 		required = null;
240 		autoTab = null;
241 		valueChangeListeners = null;
242 		focusStyleClass = null;
243 		errorStyleClass = null;
244 		fatalStyleClass = null;
245 		infoStyleClass = null;
246 		warnStyleClass = null;
247 		dateFormat = null;
248 		showCalendarOnFocus = null;
249 		autoCompletion = null;
250 		defaultDate = null;
251 		action = null;
252 		actionListeners = null;
253 
254 		super.release();
255 	}
256 
257 }