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 }