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.ImageCheckButtonComponent;
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 ImageCheckButtonTag extends CheckButtonTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(ImageCheckButtonTag.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 imageHeight;
28 private ValueExpression imageWidth;
29 public String getComponentType() {
30 return ImageCheckButtonComponent.COMPONENT_TYPE;
31 }
32
33 public final void setImageURL(ValueExpression imageURL) {
34 this.imageURL = imageURL;
35 }
36
37 public final void setDisabledImageURL(ValueExpression disabledImageURL) {
38 this.disabledImageURL = disabledImageURL;
39 }
40
41 public final void setHoverImageURL(ValueExpression hoverImageURL) {
42 this.hoverImageURL = hoverImageURL;
43 }
44
45 public final void setSelectedImageURL(ValueExpression selectedImageURL) {
46 this.selectedImageURL = selectedImageURL;
47 }
48
49 public final void setBorder(ValueExpression border) {
50 this.border = border;
51 }
52
53 public final void setBorderType(ValueExpression borderType) {
54 this.borderType = borderType;
55 }
56
57 public final void setImageHeight(ValueExpression imageHeight) {
58 this.imageHeight = imageHeight;
59 }
60
61 public final void setImageWidth(ValueExpression imageWidth) {
62 this.imageWidth = imageWidth;
63 }
64
65 protected void setProperties(UIComponent uiComponent) {
66 if (LOG.isDebugEnabled()) {
67 if (ImageCheckButtonComponent.COMPONENT_TYPE==getComponentType()) {
68 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
69 }
70 LOG.debug(" imageURL='"+imageURL+"'");
71 LOG.debug(" disabledImageURL='"+disabledImageURL+"'");
72 LOG.debug(" hoverImageURL='"+hoverImageURL+"'");
73 LOG.debug(" selectedImageURL='"+selectedImageURL+"'");
74 LOG.debug(" border='"+border+"'");
75 LOG.debug(" borderType='"+borderType+"'");
76 LOG.debug(" imageHeight='"+imageHeight+"'");
77 LOG.debug(" imageWidth='"+imageWidth+"'");
78 }
79 if ((uiComponent instanceof ImageCheckButtonComponent)==false) {
80 if (uiComponent instanceof UIViewRoot) {
81 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
82 }
83 throw new IllegalStateException("Component specified by tag is not instanceof of 'ImageCheckButtonComponent'.");
84 }
85
86 super.setProperties(uiComponent);
87
88 ImageCheckButtonComponent component = (ImageCheckButtonComponent) uiComponent;
89 FacesContext facesContext = getFacesContext();
90
91 if (imageURL != null) {
92 if (imageURL.isLiteralText()==false) {
93 component.setValueExpression(Properties.IMAGE_URL, imageURL);
94
95 } else {
96 component.setImageURL(imageURL.getExpressionString());
97 }
98 }
99
100 if (disabledImageURL != null) {
101 if (disabledImageURL.isLiteralText()==false) {
102 component.setValueExpression(Properties.DISABLED_IMAGE_URL, disabledImageURL);
103
104 } else {
105 component.setDisabledImageURL(disabledImageURL.getExpressionString());
106 }
107 }
108
109 if (hoverImageURL != null) {
110 if (hoverImageURL.isLiteralText()==false) {
111 component.setValueExpression(Properties.HOVER_IMAGE_URL, hoverImageURL);
112
113 } else {
114 component.setHoverImageURL(hoverImageURL.getExpressionString());
115 }
116 }
117
118 if (selectedImageURL != null) {
119 if (selectedImageURL.isLiteralText()==false) {
120 component.setValueExpression(Properties.SELECTED_IMAGE_URL, selectedImageURL);
121
122 } else {
123 component.setSelectedImageURL(selectedImageURL.getExpressionString());
124 }
125 }
126
127 if (border != null) {
128 if (border.isLiteralText()==false) {
129 component.setValueExpression(Properties.BORDER, border);
130
131 } else {
132 component.setBorder(getBool(border.getExpressionString()));
133 }
134 }
135
136 if (borderType != null) {
137 if (borderType.isLiteralText()==false) {
138 component.setValueExpression(Properties.BORDER_TYPE, borderType);
139
140 } else {
141 component.setBorderType(borderType.getExpressionString());
142 }
143 }
144
145 if (imageHeight != null) {
146 if (imageHeight.isLiteralText()==false) {
147 component.setValueExpression(Properties.IMAGE_HEIGHT, imageHeight);
148
149 } else {
150 component.setImageHeight(getInt(imageHeight.getExpressionString()));
151 }
152 }
153
154 if (imageWidth != null) {
155 if (imageWidth.isLiteralText()==false) {
156 component.setValueExpression(Properties.IMAGE_WIDTH, imageWidth);
157
158 } else {
159 component.setImageWidth(getInt(imageWidth.getExpressionString()));
160 }
161 }
162 }
163
164 public void release() {
165 imageURL = null;
166 disabledImageURL = null;
167 hoverImageURL = null;
168 selectedImageURL = null;
169 border = null;
170 borderType = null;
171 imageHeight = null;
172 imageWidth = null;
173
174 super.release();
175 }
176
177 }