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.component.ImageComboComponent;
12  import org.rcfaces.core.internal.tools.ListenersTools1_2;
13  import org.rcfaces.core.internal.tools.ListenersTools;
14  import javax.faces.context.FacesContext;
15  
16  public class ImageComboTag extends AbstractMenuTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(ImageComboTag.class);
20  
21  	private ValueExpression imageURL;
22  	private ValueExpression disabledImageURL;
23  	private ValueExpression hoverImageURL;
24  	private ValueExpression selectedImageURL;
25  	private ValueExpression border;
26  	private ValueExpression borderType;
27  	private ValueExpression text;
28  	private ValueExpression textPosition;
29  	private ValueExpression imageHeight;
30  	private ValueExpression imageWidth;
31  	private ValueExpression showDropDownMark;
32  	private ValueExpression popupRowNumber;
33  	public String getComponentType() {
34  		return ImageComboComponent.COMPONENT_TYPE;
35  	}
36  
37  	public final void setImageURL(ValueExpression imageURL) {
38  		this.imageURL = imageURL;
39  	}
40  
41  	public final void setDisabledImageURL(ValueExpression disabledImageURL) {
42  		this.disabledImageURL = disabledImageURL;
43  	}
44  
45  	public final void setHoverImageURL(ValueExpression hoverImageURL) {
46  		this.hoverImageURL = hoverImageURL;
47  	}
48  
49  	public final void setSelectedImageURL(ValueExpression selectedImageURL) {
50  		this.selectedImageURL = selectedImageURL;
51  	}
52  
53  	public final void setBorder(ValueExpression border) {
54  		this.border = border;
55  	}
56  
57  	public final void setBorderType(ValueExpression borderType) {
58  		this.borderType = borderType;
59  	}
60  
61  	public final void setText(ValueExpression text) {
62  		this.text = text;
63  	}
64  
65  	public final void setTextPosition(ValueExpression textPosition) {
66  		this.textPosition = textPosition;
67  	}
68  
69  	public final void setImageHeight(ValueExpression imageHeight) {
70  		this.imageHeight = imageHeight;
71  	}
72  
73  	public final void setImageWidth(ValueExpression imageWidth) {
74  		this.imageWidth = imageWidth;
75  	}
76  
77  	public final void setShowDropDownMark(ValueExpression showDropDownMark) {
78  		this.showDropDownMark = showDropDownMark;
79  	}
80  
81  	public final void setPopupRowNumber(ValueExpression popupRowNumber) {
82  		this.popupRowNumber = popupRowNumber;
83  	}
84  
85  	protected void setProperties(UIComponent uiComponent) {
86  		if (LOG.isDebugEnabled()) {
87  			if (ImageComboComponent.COMPONENT_TYPE==getComponentType()) {
88  				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
89  			}
90  			LOG.debug("  imageURL='"+imageURL+"'");
91  			LOG.debug("  disabledImageURL='"+disabledImageURL+"'");
92  			LOG.debug("  hoverImageURL='"+hoverImageURL+"'");
93  			LOG.debug("  selectedImageURL='"+selectedImageURL+"'");
94  			LOG.debug("  border='"+border+"'");
95  			LOG.debug("  borderType='"+borderType+"'");
96  			LOG.debug("  text='"+text+"'");
97  			LOG.debug("  textPosition='"+textPosition+"'");
98  			LOG.debug("  imageHeight='"+imageHeight+"'");
99  			LOG.debug("  imageWidth='"+imageWidth+"'");
100 			LOG.debug("  showDropDownMark='"+showDropDownMark+"'");
101 			LOG.debug("  popupRowNumber='"+popupRowNumber+"'");
102 		}
103 		if ((uiComponent instanceof ImageComboComponent)==false) {
104 			if (uiComponent instanceof UIViewRoot) {
105 				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
106 			}
107 			throw new IllegalStateException("Component specified by tag is not instanceof of 'ImageComboComponent'.");
108 		}
109 
110 		super.setProperties(uiComponent);
111 
112 		ImageComboComponent component = (ImageComboComponent) uiComponent;
113 		FacesContext facesContext = getFacesContext();
114 
115 		if (imageURL != null) {
116 			if (imageURL.isLiteralText()==false) {
117 				component.setValueExpression(Properties.IMAGE_URL, imageURL);
118 
119 			} else {
120 				component.setImageURL(imageURL.getExpressionString());
121 			}
122 		}
123 
124 		if (disabledImageURL != null) {
125 			if (disabledImageURL.isLiteralText()==false) {
126 				component.setValueExpression(Properties.DISABLED_IMAGE_URL, disabledImageURL);
127 
128 			} else {
129 				component.setDisabledImageURL(disabledImageURL.getExpressionString());
130 			}
131 		}
132 
133 		if (hoverImageURL != null) {
134 			if (hoverImageURL.isLiteralText()==false) {
135 				component.setValueExpression(Properties.HOVER_IMAGE_URL, hoverImageURL);
136 
137 			} else {
138 				component.setHoverImageURL(hoverImageURL.getExpressionString());
139 			}
140 		}
141 
142 		if (selectedImageURL != null) {
143 			if (selectedImageURL.isLiteralText()==false) {
144 				component.setValueExpression(Properties.SELECTED_IMAGE_URL, selectedImageURL);
145 
146 			} else {
147 				component.setSelectedImageURL(selectedImageURL.getExpressionString());
148 			}
149 		}
150 
151 		if (border != null) {
152 			if (border.isLiteralText()==false) {
153 				component.setValueExpression(Properties.BORDER, border);
154 
155 			} else {
156 				component.setBorder(getBool(border.getExpressionString()));
157 			}
158 		}
159 
160 		if (borderType != null) {
161 			if (borderType.isLiteralText()==false) {
162 				component.setValueExpression(Properties.BORDER_TYPE, borderType);
163 
164 			} else {
165 				component.setBorderType(borderType.getExpressionString());
166 			}
167 		}
168 
169 		if (text != null) {
170 			if (text.isLiteralText()==false) {
171 				component.setValueExpression(Properties.TEXT, text);
172 
173 			} else {
174 				component.setText(text.getExpressionString());
175 			}
176 		}
177 
178 		if (textPosition != null) {
179 			if (textPosition.isLiteralText()==false) {
180 				component.setValueExpression(Properties.TEXT_POSITION, textPosition);
181 
182 			} else {
183 				component.setTextPosition(textPosition.getExpressionString());
184 			}
185 		}
186 
187 		if (imageHeight != null) {
188 			if (imageHeight.isLiteralText()==false) {
189 				component.setValueExpression(Properties.IMAGE_HEIGHT, imageHeight);
190 
191 			} else {
192 				component.setImageHeight(getInt(imageHeight.getExpressionString()));
193 			}
194 		}
195 
196 		if (imageWidth != null) {
197 			if (imageWidth.isLiteralText()==false) {
198 				component.setValueExpression(Properties.IMAGE_WIDTH, imageWidth);
199 
200 			} else {
201 				component.setImageWidth(getInt(imageWidth.getExpressionString()));
202 			}
203 		}
204 
205 		if (showDropDownMark != null) {
206 			if (showDropDownMark.isLiteralText()==false) {
207 				component.setValueExpression(Properties.SHOW_DROP_DOWN_MARK, showDropDownMark);
208 
209 			} else {
210 				component.setShowDropDownMark(getBool(showDropDownMark.getExpressionString()));
211 			}
212 		}
213 
214 		if (popupRowNumber != null) {
215 			if (popupRowNumber.isLiteralText()==false) {
216 				component.setValueExpression(Properties.POPUP_ROW_NUMBER, popupRowNumber);
217 
218 			} else {
219 				component.setPopupRowNumber(getInt(popupRowNumber.getExpressionString()));
220 			}
221 		}
222 	}
223 
224 	public void release() {
225 		imageURL = null;
226 		disabledImageURL = null;
227 		hoverImageURL = null;
228 		selectedImageURL = null;
229 		border = null;
230 		borderType = null;
231 		text = null;
232 		textPosition = null;
233 		imageHeight = null;
234 		imageWidth = null;
235 		showDropDownMark = null;
236 		popupRowNumber = null;
237 
238 		super.release();
239 	}
240 
241 }