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 }