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.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 }