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 org.rcfaces.core.component.CheckButtonComponent;
7 import javax.el.ValueExpression;
8 import javax.faces.component.UIViewRoot;
9 import org.apache.commons.logging.Log;
10 import javax.servlet.jsp.tagext.Tag;
11 import org.apache.commons.logging.LogFactory;
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 CheckButtonTag extends AbstractInputTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(CheckButtonTag.class);
20
21 private ValueExpression text;
22 private ValueExpression textDirection;
23 private ValueExpression textPosition;
24 private ValueExpression selectionListeners;
25 private ValueExpression readOnly;
26 private ValueExpression alternateText;
27 private ValueExpression focusStyleClass;
28 private ValueExpression errorStyleClass;
29 private ValueExpression fatalStyleClass;
30 private ValueExpression infoStyleClass;
31 private ValueExpression warnStyleClass;
32 private ValueExpression selected;
33 public String getComponentType() {
34 return CheckButtonComponent.COMPONENT_TYPE;
35 }
36
37 public final void setText(ValueExpression text) {
38 this.text = text;
39 }
40
41 public final void setTextDirection(ValueExpression textDirection) {
42 this.textDirection = textDirection;
43 }
44
45 public final void setTextPosition(ValueExpression textPosition) {
46 this.textPosition = textPosition;
47 }
48
49 public final void setSelectionListener(ValueExpression selectionListeners) {
50 this.selectionListeners = selectionListeners;
51 }
52
53 public final void setReadOnly(ValueExpression readOnly) {
54 this.readOnly = readOnly;
55 }
56
57 public final void setAlternateText(ValueExpression alternateText) {
58 this.alternateText = alternateText;
59 }
60
61 public final void setFocusStyleClass(ValueExpression focusStyleClass) {
62 this.focusStyleClass = focusStyleClass;
63 }
64
65 public final void setErrorStyleClass(ValueExpression errorStyleClass) {
66 this.errorStyleClass = errorStyleClass;
67 }
68
69 public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
70 this.fatalStyleClass = fatalStyleClass;
71 }
72
73 public final void setInfoStyleClass(ValueExpression infoStyleClass) {
74 this.infoStyleClass = infoStyleClass;
75 }
76
77 public final void setWarnStyleClass(ValueExpression warnStyleClass) {
78 this.warnStyleClass = warnStyleClass;
79 }
80
81 public final void setSelected(ValueExpression selected) {
82 this.selected = selected;
83 }
84
85 protected void setProperties(UIComponent uiComponent) {
86 if (LOG.isDebugEnabled()) {
87 if (CheckButtonComponent.COMPONENT_TYPE==getComponentType()) {
88 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
89 }
90 LOG.debug(" text='"+text+"'");
91 LOG.debug(" textDirection='"+textDirection+"'");
92 LOG.debug(" textPosition='"+textPosition+"'");
93 LOG.debug(" readOnly='"+readOnly+"'");
94 LOG.debug(" alternateText='"+alternateText+"'");
95 LOG.debug(" focusStyleClass='"+focusStyleClass+"'");
96 LOG.debug(" errorStyleClass='"+errorStyleClass+"'");
97 LOG.debug(" fatalStyleClass='"+fatalStyleClass+"'");
98 LOG.debug(" infoStyleClass='"+infoStyleClass+"'");
99 LOG.debug(" warnStyleClass='"+warnStyleClass+"'");
100 LOG.debug(" selected='"+selected+"'");
101 }
102 if ((uiComponent instanceof CheckButtonComponent)==false) {
103 if (uiComponent instanceof UIViewRoot) {
104 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
105 }
106 throw new IllegalStateException("Component specified by tag is not instanceof of 'CheckButtonComponent'.");
107 }
108
109 super.setProperties(uiComponent);
110
111 CheckButtonComponent component = (CheckButtonComponent) uiComponent;
112 FacesContext facesContext = getFacesContext();
113
114 if (text != null) {
115 if (text.isLiteralText()==false) {
116 component.setValueExpression(Properties.TEXT, text);
117
118 } else {
119 component.setText(text.getExpressionString());
120 }
121 }
122
123 if (textDirection != null) {
124 if (textDirection.isLiteralText()==false) {
125 component.setValueExpression(Properties.TEXT_DIRECTION, textDirection);
126
127 } else {
128 component.setTextDirection(getInt(textDirection.getExpressionString()));
129 }
130 }
131
132 if (textPosition != null) {
133 if (textPosition.isLiteralText()==false) {
134 component.setValueExpression(Properties.TEXT_POSITION, textPosition);
135
136 } else {
137 component.setTextPosition(textPosition.getExpressionString());
138 }
139 }
140
141 if (selectionListeners != null) {
142 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
143 }
144
145 if (readOnly != null) {
146 if (readOnly.isLiteralText()==false) {
147 component.setValueExpression(Properties.READ_ONLY, readOnly);
148
149 } else {
150 component.setReadOnly(getBool(readOnly.getExpressionString()));
151 }
152 }
153
154 if (alternateText != null) {
155 if (alternateText.isLiteralText()==false) {
156 component.setValueExpression(Properties.ALTERNATE_TEXT, alternateText);
157
158 } else {
159 component.setAlternateText(alternateText.getExpressionString());
160 }
161 }
162
163 if (focusStyleClass != null) {
164 if (focusStyleClass.isLiteralText()==false) {
165 component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
166
167 } else {
168 component.setFocusStyleClass(focusStyleClass.getExpressionString());
169 }
170 }
171
172 if (errorStyleClass != null) {
173 if (errorStyleClass.isLiteralText()==false) {
174 component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
175
176 } else {
177 component.setErrorStyleClass(errorStyleClass.getExpressionString());
178 }
179 }
180
181 if (fatalStyleClass != null) {
182 if (fatalStyleClass.isLiteralText()==false) {
183 component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
184
185 } else {
186 component.setFatalStyleClass(fatalStyleClass.getExpressionString());
187 }
188 }
189
190 if (infoStyleClass != null) {
191 if (infoStyleClass.isLiteralText()==false) {
192 component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
193
194 } else {
195 component.setInfoStyleClass(infoStyleClass.getExpressionString());
196 }
197 }
198
199 if (warnStyleClass != null) {
200 if (warnStyleClass.isLiteralText()==false) {
201 component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
202
203 } else {
204 component.setWarnStyleClass(warnStyleClass.getExpressionString());
205 }
206 }
207
208 if (selected != null) {
209 if (selected.isLiteralText()==false) {
210 component.setValueExpression(Properties.SELECTED, selected);
211
212 } else {
213 component.setSelected(getBool(selected.getExpressionString()));
214 }
215 }
216 }
217
218 public void release() {
219 text = null;
220 textDirection = null;
221 textPosition = null;
222 selectionListeners = null;
223 readOnly = null;
224 alternateText = null;
225 focusStyleClass = null;
226 errorStyleClass = null;
227 fatalStyleClass = null;
228 infoStyleClass = null;
229 warnStyleClass = null;
230 selected = null;
231
232 super.release();
233 }
234
235 }