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.ItemsListComponent;
14 import javax.faces.context.FacesContext;
15
16 public class ItemsListTag extends AbstractInputTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(ItemsListTag.class);
20
21 private ValueExpression doubleClickListeners;
22 private ValueExpression textPosition;
23 private ValueExpression borderType;
24 private ValueExpression selectionListeners;
25 private ValueExpression checkListeners;
26 private ValueExpression checkedValues;
27 private ValueExpression readOnly;
28 private ValueExpression defaultImageURL;
29 private ValueExpression defaultSelectedImageURL;
30 private ValueExpression defaultHoverImageURL;
31 private ValueExpression defaultDisabledImageURL;
32 private ValueExpression defaultItemInputType;
33 private ValueExpression defaultItemLookId;
34 private ValueExpression defaultItemStyleClass;
35 private ValueExpression defaultItemGroupName;
36 private ValueExpression itemPadding;
37 private ValueExpression itemHiddenMode;
38 public String getComponentType() {
39 return ItemsListComponent.COMPONENT_TYPE;
40 }
41
42 public final void setDoubleClickListener(ValueExpression doubleClickListeners) {
43 this.doubleClickListeners = doubleClickListeners;
44 }
45
46 public final void setTextPosition(ValueExpression textPosition) {
47 this.textPosition = textPosition;
48 }
49
50 public final void setBorderType(ValueExpression borderType) {
51 this.borderType = borderType;
52 }
53
54 public final void setSelectionListener(ValueExpression selectionListeners) {
55 this.selectionListeners = selectionListeners;
56 }
57
58 public final void setCheckListener(ValueExpression checkListeners) {
59 this.checkListeners = checkListeners;
60 }
61
62 public final void setCheckedValues(ValueExpression checkedValues) {
63 this.checkedValues = checkedValues;
64 }
65
66 public final void setReadOnly(ValueExpression readOnly) {
67 this.readOnly = readOnly;
68 }
69
70 public final void setDefaultImageURL(ValueExpression defaultImageURL) {
71 this.defaultImageURL = defaultImageURL;
72 }
73
74 public final void setDefaultSelectedImageURL(ValueExpression defaultSelectedImageURL) {
75 this.defaultSelectedImageURL = defaultSelectedImageURL;
76 }
77
78 public final void setDefaultHoverImageURL(ValueExpression defaultHoverImageURL) {
79 this.defaultHoverImageURL = defaultHoverImageURL;
80 }
81
82 public final void setDefaultDisabledImageURL(ValueExpression defaultDisabledImageURL) {
83 this.defaultDisabledImageURL = defaultDisabledImageURL;
84 }
85
86 public final void setDefaultItemInputType(ValueExpression defaultItemInputType) {
87 this.defaultItemInputType = defaultItemInputType;
88 }
89
90 public final void setDefaultItemLookId(ValueExpression defaultItemLookId) {
91 this.defaultItemLookId = defaultItemLookId;
92 }
93
94 public final void setDefaultItemStyleClass(ValueExpression defaultItemStyleClass) {
95 this.defaultItemStyleClass = defaultItemStyleClass;
96 }
97
98 public final void setDefaultItemGroupName(ValueExpression defaultItemGroupName) {
99 this.defaultItemGroupName = defaultItemGroupName;
100 }
101
102 public final void setItemPadding(ValueExpression itemPadding) {
103 this.itemPadding = itemPadding;
104 }
105
106 public final void setItemHiddenMode(ValueExpression itemHiddenMode) {
107 this.itemHiddenMode = itemHiddenMode;
108 }
109
110 protected void setProperties(UIComponent uiComponent) {
111 if (LOG.isDebugEnabled()) {
112 if (ItemsListComponent.COMPONENT_TYPE==getComponentType()) {
113 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
114 }
115 LOG.debug(" textPosition='"+textPosition+"'");
116 LOG.debug(" borderType='"+borderType+"'");
117 LOG.debug(" checkedValues='"+checkedValues+"'");
118 LOG.debug(" readOnly='"+readOnly+"'");
119 LOG.debug(" defaultImageURL='"+defaultImageURL+"'");
120 LOG.debug(" defaultSelectedImageURL='"+defaultSelectedImageURL+"'");
121 LOG.debug(" defaultHoverImageURL='"+defaultHoverImageURL+"'");
122 LOG.debug(" defaultDisabledImageURL='"+defaultDisabledImageURL+"'");
123 LOG.debug(" defaultItemInputType='"+defaultItemInputType+"'");
124 LOG.debug(" defaultItemLookId='"+defaultItemLookId+"'");
125 LOG.debug(" defaultItemStyleClass='"+defaultItemStyleClass+"'");
126 LOG.debug(" defaultItemGroupName='"+defaultItemGroupName+"'");
127 LOG.debug(" itemPadding='"+itemPadding+"'");
128 LOG.debug(" itemHiddenMode='"+itemHiddenMode+"'");
129 }
130 if ((uiComponent instanceof ItemsListComponent)==false) {
131 if (uiComponent instanceof UIViewRoot) {
132 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
133 }
134 throw new IllegalStateException("Component specified by tag is not instanceof of 'ItemsListComponent'.");
135 }
136
137 super.setProperties(uiComponent);
138
139 ItemsListComponent component = (ItemsListComponent) uiComponent;
140 FacesContext facesContext = getFacesContext();
141
142 if (doubleClickListeners != null) {
143 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.DOUBLE_CLICK_LISTENER_TYPE, doubleClickListeners);
144 }
145
146 if (textPosition != null) {
147 if (textPosition.isLiteralText()==false) {
148 component.setValueExpression(Properties.TEXT_POSITION, textPosition);
149
150 } else {
151 component.setTextPosition(textPosition.getExpressionString());
152 }
153 }
154
155 if (borderType != null) {
156 if (borderType.isLiteralText()==false) {
157 component.setValueExpression(Properties.BORDER_TYPE, borderType);
158
159 } else {
160 component.setBorderType(borderType.getExpressionString());
161 }
162 }
163
164 if (selectionListeners != null) {
165 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
166 }
167
168 if (checkListeners != null) {
169 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.CHECK_LISTENER_TYPE, checkListeners);
170 }
171
172 if (checkedValues != null) {
173 component.setValueExpression(Properties.CHECKED_VALUES, checkedValues);
174 }
175
176 if (readOnly != null) {
177 if (readOnly.isLiteralText()==false) {
178 component.setValueExpression(Properties.READ_ONLY, readOnly);
179
180 } else {
181 component.setReadOnly(getBool(readOnly.getExpressionString()));
182 }
183 }
184
185 if (defaultImageURL != null) {
186 if (defaultImageURL.isLiteralText()==false) {
187 component.setValueExpression(Properties.DEFAULT_IMAGE_URL, defaultImageURL);
188
189 } else {
190 component.setDefaultImageURL(defaultImageURL.getExpressionString());
191 }
192 }
193
194 if (defaultSelectedImageURL != null) {
195 if (defaultSelectedImageURL.isLiteralText()==false) {
196 component.setValueExpression(Properties.DEFAULT_SELECTED_IMAGE_URL, defaultSelectedImageURL);
197
198 } else {
199 component.setDefaultSelectedImageURL(defaultSelectedImageURL.getExpressionString());
200 }
201 }
202
203 if (defaultHoverImageURL != null) {
204 if (defaultHoverImageURL.isLiteralText()==false) {
205 component.setValueExpression(Properties.DEFAULT_HOVER_IMAGE_URL, defaultHoverImageURL);
206
207 } else {
208 component.setDefaultHoverImageURL(defaultHoverImageURL.getExpressionString());
209 }
210 }
211
212 if (defaultDisabledImageURL != null) {
213 if (defaultDisabledImageURL.isLiteralText()==false) {
214 component.setValueExpression(Properties.DEFAULT_DISABLED_IMAGE_URL, defaultDisabledImageURL);
215
216 } else {
217 component.setDefaultDisabledImageURL(defaultDisabledImageURL.getExpressionString());
218 }
219 }
220
221 if (defaultItemInputType != null) {
222 if (defaultItemInputType.isLiteralText()==false) {
223 component.setValueExpression(Properties.DEFAULT_ITEM_INPUT_TYPE, defaultItemInputType);
224
225 } else {
226 component.setDefaultItemInputType(defaultItemInputType.getExpressionString());
227 }
228 }
229
230 if (defaultItemLookId != null) {
231 if (defaultItemLookId.isLiteralText()==false) {
232 component.setValueExpression(Properties.DEFAULT_ITEM_LOOK_ID, defaultItemLookId);
233
234 } else {
235 component.setDefaultItemLookId(defaultItemLookId.getExpressionString());
236 }
237 }
238
239 if (defaultItemStyleClass != null) {
240 if (defaultItemStyleClass.isLiteralText()==false) {
241 component.setValueExpression(Properties.DEFAULT_ITEM_STYLE_CLASS, defaultItemStyleClass);
242
243 } else {
244 component.setDefaultItemStyleClass(defaultItemStyleClass.getExpressionString());
245 }
246 }
247
248 if (defaultItemGroupName != null) {
249 if (defaultItemGroupName.isLiteralText()==false) {
250 component.setValueExpression(Properties.DEFAULT_ITEM_GROUP_NAME, defaultItemGroupName);
251
252 } else {
253 component.setDefaultItemGroupName(defaultItemGroupName.getExpressionString());
254 }
255 }
256
257 if (itemPadding != null) {
258 if (itemPadding.isLiteralText()==false) {
259 component.setValueExpression(Properties.ITEM_PADDING, itemPadding);
260
261 } else {
262 component.setItemPadding(getInt(itemPadding.getExpressionString()));
263 }
264 }
265
266 if (itemHiddenMode != null) {
267 if (itemHiddenMode.isLiteralText()==false) {
268 component.setValueExpression(Properties.ITEM_HIDDEN_MODE, itemHiddenMode);
269
270 } else {
271 component.setItemHiddenMode(itemHiddenMode.getExpressionString());
272 }
273 }
274 }
275
276 public void release() {
277 doubleClickListeners = null;
278 textPosition = null;
279 borderType = null;
280 selectionListeners = null;
281 checkListeners = null;
282 checkedValues = null;
283 readOnly = null;
284 defaultImageURL = null;
285 defaultSelectedImageURL = null;
286 defaultHoverImageURL = null;
287 defaultDisabledImageURL = null;
288 defaultItemInputType = null;
289 defaultItemLookId = null;
290 defaultItemStyleClass = null;
291 defaultItemGroupName = null;
292 itemPadding = null;
293 itemHiddenMode = null;
294
295 super.release();
296 }
297
298 }