View Javadoc

1   package org.apache.myfaces.tobago.taglib.extension12;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one or more
5    * contributor license agreements.  See the NOTICE file distributed with
6    * this work for additional information regarding copyright ownership.
7    * The ASF licenses this file to You under the Apache License, Version 2.0
8    * (the "License"); you may not use this file except in compliance with
9    * the License.  You may obtain a copy of the License at
10   *
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   */
19  
20  import org.apache.myfaces.tobago.apt.annotation.ExtensionTag;
21  import org.apache.myfaces.tobago.apt.annotation.Tag;
22  import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
23  import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
24  import org.apache.myfaces.tobago.apt.annotation.DynamicExpression;
25  import org.apache.myfaces.tobago.internal.taglib.SelectOneRadioTag;
26  
27  import javax.servlet.jsp.JspException;
28  
29  /**
30   * Render a set of radiobuttons.
31   *
32   * @since 1.0.13
33   */
34  
35  @Tag(name = "selectOneRadio")
36  @ExtensionTag(baseClassName = "org.apache.myfaces.tobago.internal.taglib.SelectOneRadioTag")
37  public class SelectOneRadioExtensionTag extends TobagoExtensionBodyTagSupport {
38  
39    private javax.el.ValueExpression required;
40    private javax.el.ValueExpression value;
41    private javax.el.MethodExpression valueChangeListener;
42    private javax.el.ValueExpression disabled;
43    private javax.el.ValueExpression readonly;
44    private javax.el.ValueExpression onchange;
45    private javax.el.ValueExpression inline;
46    private javax.el.ValueExpression label;
47    private javax.el.ValueExpression rendered;
48    private javax.el.ValueExpression binding;
49    private javax.el.ValueExpression tip;
50    private javax.el.MethodExpression validator;
51    private javax.el.ValueExpression converter;
52    private javax.el.ValueExpression labelWidth;
53    private javax.el.ValueExpression tabIndex;
54    private javax.el.ValueExpression focus;
55    private javax.el.ValueExpression renderRange;
56    private javax.el.ValueExpression validatorMessage;
57    private javax.el.ValueExpression converterMessage;
58    private javax.el.ValueExpression requiredMessage;
59    private javax.el.ValueExpression markup;
60  
61    private LabelExtensionTag labelTag;
62    private SelectOneRadioTag selectOneRadioTag;
63  
64    @Override
65    public int doStartTag() throws JspException {
66  
67      labelTag = new LabelExtensionTag();
68      labelTag.setPageContext(pageContext);
69      if (label != null) {
70        labelTag.setValue(label);
71      }
72      if (tip != null) {
73        labelTag.setTip(tip);
74      }
75      if (rendered != null) {
76        labelTag.setRendered(rendered);
77      }
78      if (labelWidth != null) {
79        labelTag.setColumns(createStringValueExpression(labelWidth.getExpressionString() + ";*"));
80      }
81      if (markup != null) {
82        labelTag.setMarkup(markup);
83      }
84      labelTag.setParent(getParent());
85      labelTag.doStartTag();
86  
87      selectOneRadioTag = new SelectOneRadioTag();
88      selectOneRadioTag.setPageContext(pageContext);
89      if (value != null) {
90        selectOneRadioTag.setValue(value);
91      }
92      if (valueChangeListener != null) {
93        selectOneRadioTag.setValueChangeListener(valueChangeListener);
94      }
95      if (validator != null) {
96        selectOneRadioTag.setValidator(validator);
97      }
98      if (converter != null) {
99        selectOneRadioTag.setConverter(converter);
100     }
101     if (binding != null) {
102       selectOneRadioTag.setBinding(binding);
103     }
104     if (onchange != null) {
105       selectOneRadioTag.setOnchange(onchange);
106     }
107     if (disabled != null) {
108       selectOneRadioTag.setDisabled(disabled);
109     }
110     if (inline != null) {
111       selectOneRadioTag.setInline(inline);
112     }
113     if (focus != null) {
114       selectOneRadioTag.setFocus(focus);
115     }
116     if (id != null) {
117       selectOneRadioTag.setId(id);
118     }
119     if (readonly != null) {
120       selectOneRadioTag.setReadonly(readonly);
121     }
122     if (required != null) {
123       selectOneRadioTag.setRequired(required);
124     }
125     if (tabIndex != null) {
126       selectOneRadioTag.setTabIndex(tabIndex);
127     }
128     if (renderRange != null) {
129       selectOneRadioTag.setRenderRange(renderRange);
130     }
131     if (validatorMessage != null) {
132       selectOneRadioTag.setValidatorMessage(validatorMessage);
133     }
134     if (converterMessage != null) {
135       selectOneRadioTag.setConverterMessage(converterMessage);
136     }
137     if (requiredMessage != null) {
138       selectOneRadioTag.setRequiredMessage(requiredMessage);
139     }
140     if (markup != null) {
141       selectOneRadioTag.setMarkup(markup);
142     }
143 
144     selectOneRadioTag.setParent(labelTag);
145     selectOneRadioTag.doStartTag();
146 
147     return super.doStartTag();
148   }
149 
150   @Override
151   public int doEndTag() throws JspException {
152     selectOneRadioTag.doEndTag();
153     labelTag.doEndTag();
154     return super.doEndTag();
155   }
156 
157   @Override
158   public void release() {
159     super.release();
160     binding = null;
161     onchange = null;
162     disabled = null;
163     inline = null;
164     label = null;
165     labelWidth = null;
166     converter = null;
167     validator = null;
168     readonly = null;
169     rendered = null;
170     required = null;
171     tip = null;
172     value = null;
173     valueChangeListener = null;
174     tabIndex = null;
175     selectOneRadioTag = null;
176     labelTag = null;
177     focus = null;
178     renderRange = null;
179     validatorMessage = null;
180     converterMessage = null;
181     requiredMessage = null;
182     markup = null;
183   }
184 
185   /**
186    * Flag indicating that a value is required.
187    * If the value is an empty string a
188    * ValidationError occurs and a Error Message is rendered.
189    */
190   @TagAttribute
191   @UIComponentTagAttribute(type = "java.lang.Boolean")
192   public void setRequired(javax.el.ValueExpression required) {
193     this.required = required;
194   }
195 
196   /**
197    * The current value of this component.
198    */
199   @TagAttribute
200   @UIComponentTagAttribute(type = "java.lang.Object")
201   public void setValue(javax.el.ValueExpression value) {
202     this.value = value;
203   }
204 
205   /**
206    * MethodBinding representing a value change listener method
207    * that will be notified when a new value has been set for this input component.
208    * The expression must evaluate to a public method that takes a ValueChangeEvent
209    * parameter, with a return type of void.
210    *
211    * @param valueChangeListener
212    */
213   @TagAttribute
214   @UIComponentTagAttribute(
215           type = {},
216           expression = DynamicExpression.METHOD_BINDING_REQUIRED,
217           methodSignature = "javax.faces.event.ValueChangeEvent")
218   public void setValueChangeListener(javax.el.MethodExpression valueChangeListener) {
219     this.valueChangeListener = valueChangeListener;
220   }
221 
222   /**
223    * A method binding EL expression,
224    * accepting FacesContext, UIComponent,
225    * and Object parameters, and returning void, that validates
226    * the component's local value.
227    */
228   @TagAttribute
229   @UIComponentTagAttribute(type = {},
230       expression = DynamicExpression.METHOD_BINDING,
231       methodSignature = { "javax.faces.context.FacesContext", "javax.faces.component.UIComponent", "java.lang.Object" })
232   public void setValidator(javax.el.MethodExpression validator) {
233     this.validator = validator;
234   }
235 
236   /**
237    * Flag indicating that this element is disabled.
238    */
239   @TagAttribute()
240   @UIComponentTagAttribute(type = "java.lang.Boolean", defaultValue = "false")
241   public void setDisabled(javax.el.ValueExpression disabled) {
242     this.disabled = disabled;
243   }
244 
245   /**
246    * Flag indicating that this component will prohibit changes by the user.
247    */
248   @TagAttribute
249   @UIComponentTagAttribute(type = "java.lang.Boolean")
250   public void setReadonly(javax.el.ValueExpression readonly) {
251     this.readonly = readonly;
252   }
253 
254   /**
255    * Clientside script function to add to this component's onchange handler.
256    */
257   @TagAttribute
258   @UIComponentTagAttribute()
259   public void setOnchange(javax.el.ValueExpression onchange) {
260     this.onchange = onchange;
261   }
262 
263   /**
264    * An expression that specifies the Converter for this component.
265    * If the value binding expression is a String,
266    * the String is used as an ID to look up a Converter.
267    * If the value binding expression is a Converter,
268    * uses that instance as the converter.
269    * The value can either be a static value (ID case only)
270    * or an EL expression.
271    */
272   @TagAttribute
273   @UIComponentTagAttribute(type = "javax.faces.convert.Converter",
274       expression = DynamicExpression.VALUE_BINDING)
275   public void setConverter(javax.el.ValueExpression converter) {
276     this.converter = converter;
277   }
278   /**
279    * Flag indicating this component should rendered as an inline element.
280    */
281   @TagAttribute
282   @UIComponentTagAttribute(type = "java.lang.Boolean")
283   public void setInline(javax.el.ValueExpression inline) {
284     this.inline = inline;
285   }
286 
287   /**
288    * Text value to display as label.
289    * If text contains an underscore the next character is used as accesskey.
290    */
291   @TagAttribute
292   @UIComponentTagAttribute()
293   public void setLabel(javax.el.ValueExpression label) {
294     this.label = label;
295   }
296 
297   /**
298    * Flag indicating whether or not this component should be rendered
299    * (during Render Response Phase), or processed on any subsequent form submit.
300    */
301   @TagAttribute
302   @UIComponentTagAttribute(type = "java.lang.Boolean", defaultValue = "true")
303   public void setRendered(javax.el.ValueExpression rendered) {
304     this.rendered = rendered;
305   }
306 
307   /**
308    * The value binding expression linking this
309    * component to a property in a backing bean.
310    */
311   @TagAttribute
312   @UIComponentTagAttribute(type = "javax.faces.component.UIComponent")
313   public void setBinding(javax.el.ValueExpression binding) {
314     this.binding = binding;
315   }
316 
317   /**
318    * Text value to display as tooltip.
319    */
320   @TagAttribute
321   @UIComponentTagAttribute()
322   public void setTip(javax.el.ValueExpression tip) {
323     this.tip = tip;
324   }
325 
326   /**
327    * The width for the label component. Default: 'fixed'.
328    * This value is used in the gridLayouts columns attribute.
329    * See gridLayout tag for valid values.
330    */
331   @TagAttribute
332   @UIComponentTagAttribute()
333   public void setLabelWidth(javax.el.ValueExpression labelWidth) {
334     this.labelWidth = labelWidth;
335   }
336 
337   @TagAttribute
338   @UIComponentTagAttribute(type = "java.lang.Integer")
339   public void setTabIndex(javax.el.ValueExpression tabIndex) {
340     this.tabIndex = tabIndex;
341   }
342 
343   /**
344    * Flag indicating this component should recieve the focus.
345    */
346   @TagAttribute
347   @UIComponentTagAttribute(type = "java.lang.Boolean")
348   public void setFocus(javax.el.ValueExpression focus) {
349     this.focus = focus;
350   }
351 
352   /**
353    * Range of items to render.
354    */
355   @TagAttribute
356   @UIComponentTagAttribute()
357   public void setRenderRange(javax.el.ValueExpression renderRange) {
358     this.renderRange = renderRange;
359   }
360 
361   /**
362    * An expression that specifies the validator message
363    */
364   @TagAttribute
365   @UIComponentTagAttribute()
366   public void setValidatorMessage(javax.el.ValueExpression validatorMessage) {
367     this.validatorMessage = validatorMessage;
368   }
369 
370   /**
371    * An expression that specifies the converter message
372    */
373   @TagAttribute
374   @UIComponentTagAttribute()
375   public void setConverterMessage(javax.el.ValueExpression converterMessage) {
376     this.converterMessage = converterMessage;
377   }
378 
379   /**
380    * An expression that specifies the required message
381    */
382   @TagAttribute
383   @UIComponentTagAttribute()
384   public void setRequiredMessage(javax.el.ValueExpression requiredMessage) {
385     this.requiredMessage = requiredMessage;
386   }
387 
388   /**
389    * Indicate markup of this component.
390    * Possible value is 'none'. But this can be overridden in the theme.
391    */
392   @TagAttribute
393   @UIComponentTagAttribute(defaultValue = "none", type = "java.lang.String[]")
394   public void setMarkup(javax.el.ValueExpression markup) {
395     this.markup = markup;
396   }
397 
398 }