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.internal.tools.ListenersTools;
13 import org.rcfaces.core.component.ComboGridComponent;
14 import javax.faces.context.FacesContext;
15
16 public class ComboGridTag extends KeyEntryTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(ComboGridTag.class);
20
21 private ValueExpression additionalInformationListeners;
22 private ValueExpression additionalInformationValues;
23 private ValueExpression clientAdditionalInformationFullState;
24 private ValueExpression additionalInformationCardinality;
25 private ValueExpression rowStyleClass;
26 private ValueExpression manyResultsMessage;
27 private ValueExpression message;
28 private ValueExpression oneResultMessage;
29 private ValueExpression zeroResultMessage;
30 private ValueExpression paged;
31 private ValueExpression headerVisible;
32 private ValueExpression popupWidth;
33 private ValueExpression popupHeight;
34 private ValueExpression pagerStyleClass;
35 private ValueExpression pagerLookId;
36 private ValueExpression popupStyleClass;
37 private ValueExpression gridStyleClass;
38 private ValueExpression gridLookId;
39 private ValueExpression searchFieldVisible;
40 public String getComponentType() {
41 return ComboGridComponent.COMPONENT_TYPE;
42 }
43
44 public final void setAdditionalInformationListener(ValueExpression additionalInformationListeners) {
45 this.additionalInformationListeners = additionalInformationListeners;
46 }
47
48 public final void setAdditionalInformationValues(ValueExpression additionalInformationValues) {
49 this.additionalInformationValues = additionalInformationValues;
50 }
51
52 public final void setClientAdditionalInformationFullState(ValueExpression clientAdditionalInformationFullState) {
53 this.clientAdditionalInformationFullState = clientAdditionalInformationFullState;
54 }
55
56 public final void setAdditionalInformationCardinality(ValueExpression additionalInformationCardinality) {
57 this.additionalInformationCardinality = additionalInformationCardinality;
58 }
59
60 public final void setRowStyleClass(ValueExpression rowStyleClass) {
61 this.rowStyleClass = rowStyleClass;
62 }
63
64 public final void setManyResultsMessage(ValueExpression manyResultsMessage) {
65 this.manyResultsMessage = manyResultsMessage;
66 }
67
68 public final void setMessage(ValueExpression message) {
69 this.message = message;
70 }
71
72 public final void setOneResultMessage(ValueExpression oneResultMessage) {
73 this.oneResultMessage = oneResultMessage;
74 }
75
76 public final void setZeroResultMessage(ValueExpression zeroResultMessage) {
77 this.zeroResultMessage = zeroResultMessage;
78 }
79
80 public final void setPaged(ValueExpression paged) {
81 this.paged = paged;
82 }
83
84 public final void setHeaderVisible(ValueExpression headerVisible) {
85 this.headerVisible = headerVisible;
86 }
87
88 public final void setPopupWidth(ValueExpression popupWidth) {
89 this.popupWidth = popupWidth;
90 }
91
92 public final void setPopupHeight(ValueExpression popupHeight) {
93 this.popupHeight = popupHeight;
94 }
95
96 public final void setPagerStyleClass(ValueExpression pagerStyleClass) {
97 this.pagerStyleClass = pagerStyleClass;
98 }
99
100 public final void setPagerLookId(ValueExpression pagerLookId) {
101 this.pagerLookId = pagerLookId;
102 }
103
104 public final void setPopupStyleClass(ValueExpression popupStyleClass) {
105 this.popupStyleClass = popupStyleClass;
106 }
107
108 public final void setGridStyleClass(ValueExpression gridStyleClass) {
109 this.gridStyleClass = gridStyleClass;
110 }
111
112 public final void setGridLookId(ValueExpression gridLookId) {
113 this.gridLookId = gridLookId;
114 }
115
116 public final void setSearchFieldVisible(ValueExpression searchFieldVisible) {
117 this.searchFieldVisible = searchFieldVisible;
118 }
119
120 protected void setProperties(UIComponent uiComponent) {
121 if (LOG.isDebugEnabled()) {
122 if (ComboGridComponent.COMPONENT_TYPE==getComponentType()) {
123 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
124 }
125 LOG.debug(" additionalInformationValues='"+additionalInformationValues+"'");
126 LOG.debug(" clientAdditionalInformationFullState='"+clientAdditionalInformationFullState+"'");
127 LOG.debug(" additionalInformationCardinality='"+additionalInformationCardinality+"'");
128 LOG.debug(" rowStyleClass='"+rowStyleClass+"'");
129 LOG.debug(" manyResultsMessage='"+manyResultsMessage+"'");
130 LOG.debug(" message='"+message+"'");
131 LOG.debug(" oneResultMessage='"+oneResultMessage+"'");
132 LOG.debug(" zeroResultMessage='"+zeroResultMessage+"'");
133 LOG.debug(" paged='"+paged+"'");
134 LOG.debug(" headerVisible='"+headerVisible+"'");
135 LOG.debug(" popupWidth='"+popupWidth+"'");
136 LOG.debug(" popupHeight='"+popupHeight+"'");
137 LOG.debug(" pagerStyleClass='"+pagerStyleClass+"'");
138 LOG.debug(" pagerLookId='"+pagerLookId+"'");
139 LOG.debug(" popupStyleClass='"+popupStyleClass+"'");
140 LOG.debug(" gridStyleClass='"+gridStyleClass+"'");
141 LOG.debug(" gridLookId='"+gridLookId+"'");
142 LOG.debug(" searchFieldVisible='"+searchFieldVisible+"'");
143 }
144 if ((uiComponent instanceof ComboGridComponent)==false) {
145 if (uiComponent instanceof UIViewRoot) {
146 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
147 }
148 throw new IllegalStateException("Component specified by tag is not instanceof of 'ComboGridComponent'.");
149 }
150
151 super.setProperties(uiComponent);
152
153 ComboGridComponent component = (ComboGridComponent) uiComponent;
154 FacesContext facesContext = getFacesContext();
155
156 if (additionalInformationListeners != null) {
157 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.ADDITIONAL_INFORMATION_LISTENER_TYPE, additionalInformationListeners);
158 }
159
160 if (additionalInformationValues != null) {
161 component.setValueExpression(Properties.ADDITIONAL_INFORMATION_VALUES, additionalInformationValues);
162 }
163
164 if (clientAdditionalInformationFullState != null) {
165 if (clientAdditionalInformationFullState.isLiteralText()==false) {
166 component.setValueExpression(Properties.CLIENT_ADDITIONAL_INFORMATION_FULL_STATE, clientAdditionalInformationFullState);
167
168 } else {
169 component.setClientAdditionalInformationFullState(clientAdditionalInformationFullState.getExpressionString());
170 }
171 }
172
173 if (additionalInformationCardinality != null) {
174 if (additionalInformationCardinality.isLiteralText()==false) {
175 component.setValueExpression(Properties.ADDITIONAL_INFORMATION_CARDINALITY, additionalInformationCardinality);
176
177 } else {
178 component.setAdditionalInformationCardinality(getInt(additionalInformationCardinality.getExpressionString()));
179 }
180 }
181
182 if (rowStyleClass != null) {
183 if (rowStyleClass.isLiteralText()==false) {
184 component.setValueExpression(Properties.ROW_STYLE_CLASS, rowStyleClass);
185
186 } else {
187 component.setRowStyleClass(rowStyleClass.getExpressionString());
188 }
189 }
190
191 if (manyResultsMessage != null) {
192 if (manyResultsMessage.isLiteralText()==false) {
193 component.setValueExpression(Properties.MANY_RESULTS_MESSAGE, manyResultsMessage);
194
195 } else {
196 component.setManyResultsMessage(manyResultsMessage.getExpressionString());
197 }
198 }
199
200 if (message != null) {
201 if (message.isLiteralText()==false) {
202 component.setValueExpression(Properties.MESSAGE, message);
203
204 } else {
205 component.setMessage(message.getExpressionString());
206 }
207 }
208
209 if (oneResultMessage != null) {
210 if (oneResultMessage.isLiteralText()==false) {
211 component.setValueExpression(Properties.ONE_RESULT_MESSAGE, oneResultMessage);
212
213 } else {
214 component.setOneResultMessage(oneResultMessage.getExpressionString());
215 }
216 }
217
218 if (zeroResultMessage != null) {
219 if (zeroResultMessage.isLiteralText()==false) {
220 component.setValueExpression(Properties.ZERO_RESULT_MESSAGE, zeroResultMessage);
221
222 } else {
223 component.setZeroResultMessage(zeroResultMessage.getExpressionString());
224 }
225 }
226
227 if (paged != null) {
228 if (paged.isLiteralText()==false) {
229 component.setValueExpression(Properties.PAGED, paged);
230
231 } else {
232 component.setPaged(getBool(paged.getExpressionString()));
233 }
234 }
235
236 if (headerVisible != null) {
237 if (headerVisible.isLiteralText()==false) {
238 component.setValueExpression(Properties.HEADER_VISIBLE, headerVisible);
239
240 } else {
241 component.setHeaderVisible(getBool(headerVisible.getExpressionString()));
242 }
243 }
244
245 if (popupWidth != null) {
246 if (popupWidth.isLiteralText()==false) {
247 component.setValueExpression(Properties.POPUP_WIDTH, popupWidth);
248
249 } else {
250 component.setPopupWidth(getInt(popupWidth.getExpressionString()));
251 }
252 }
253
254 if (popupHeight != null) {
255 if (popupHeight.isLiteralText()==false) {
256 component.setValueExpression(Properties.POPUP_HEIGHT, popupHeight);
257
258 } else {
259 component.setPopupHeight(getInt(popupHeight.getExpressionString()));
260 }
261 }
262
263 if (pagerStyleClass != null) {
264 if (pagerStyleClass.isLiteralText()==false) {
265 component.setValueExpression(Properties.PAGER_STYLE_CLASS, pagerStyleClass);
266
267 } else {
268 component.setPagerStyleClass(pagerStyleClass.getExpressionString());
269 }
270 }
271
272 if (pagerLookId != null) {
273 if (pagerLookId.isLiteralText()==false) {
274 component.setValueExpression(Properties.PAGER_LOOK_ID, pagerLookId);
275
276 } else {
277 component.setPagerLookId(pagerLookId.getExpressionString());
278 }
279 }
280
281 if (popupStyleClass != null) {
282 if (popupStyleClass.isLiteralText()==false) {
283 component.setValueExpression(Properties.POPUP_STYLE_CLASS, popupStyleClass);
284
285 } else {
286 component.setPopupStyleClass(popupStyleClass.getExpressionString());
287 }
288 }
289
290 if (gridStyleClass != null) {
291 if (gridStyleClass.isLiteralText()==false) {
292 component.setValueExpression(Properties.GRID_STYLE_CLASS, gridStyleClass);
293
294 } else {
295 component.setGridStyleClass(gridStyleClass.getExpressionString());
296 }
297 }
298
299 if (gridLookId != null) {
300 if (gridLookId.isLiteralText()==false) {
301 component.setValueExpression(Properties.GRID_LOOK_ID, gridLookId);
302
303 } else {
304 component.setGridLookId(gridLookId.getExpressionString());
305 }
306 }
307
308 if (searchFieldVisible != null) {
309 if (searchFieldVisible.isLiteralText()==false) {
310 component.setValueExpression(Properties.SEARCH_FIELD_VISIBLE, searchFieldVisible);
311
312 } else {
313 component.setSearchFieldVisible(getBool(searchFieldVisible.getExpressionString()));
314 }
315 }
316 }
317
318 public void release() {
319 additionalInformationListeners = null;
320 additionalInformationValues = null;
321 clientAdditionalInformationFullState = null;
322 additionalInformationCardinality = null;
323 rowStyleClass = null;
324 manyResultsMessage = null;
325 message = null;
326 oneResultMessage = null;
327 zeroResultMessage = null;
328 paged = null;
329 headerVisible = null;
330 popupWidth = null;
331 popupHeight = null;
332 pagerStyleClass = null;
333 pagerLookId = null;
334 popupStyleClass = null;
335 gridStyleClass = null;
336 gridLookId = null;
337 searchFieldVisible = null;
338
339 super.release();
340 }
341
342 }