001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019
020 package org.apache.myfaces.tobago.taglib.extension;
021
022 import org.apache.myfaces.tobago.apt.annotation.ExtensionTag;
023 import org.apache.myfaces.tobago.apt.annotation.Tag;
024 import org.apache.myfaces.tobago.taglib.component.SelectOneRadioTag;
025 import org.apache.myfaces.tobago.taglib.decl.HasBinding;
026 import org.apache.myfaces.tobago.taglib.decl.HasConverter;
027 import org.apache.myfaces.tobago.taglib.decl.HasId;
028 import org.apache.myfaces.tobago.taglib.decl.HasLabel;
029 import org.apache.myfaces.tobago.taglib.decl.HasLabelWidth;
030 import org.apache.myfaces.tobago.taglib.decl.HasOnchange;
031 import org.apache.myfaces.tobago.taglib.decl.HasRenderRange;
032 import org.apache.myfaces.tobago.taglib.decl.HasTabIndex;
033 import org.apache.myfaces.tobago.taglib.decl.HasTip;
034 import org.apache.myfaces.tobago.taglib.decl.HasValidator;
035 import org.apache.myfaces.tobago.taglib.decl.HasValue;
036 import org.apache.myfaces.tobago.taglib.decl.HasValueChangeListener;
037 import org.apache.myfaces.tobago.taglib.decl.IsDisabled;
038 import org.apache.myfaces.tobago.taglib.decl.IsInline;
039 import org.apache.myfaces.tobago.taglib.decl.IsReadonly;
040 import org.apache.myfaces.tobago.taglib.decl.IsRendered;
041 import org.apache.myfaces.tobago.taglib.decl.IsRequired;
042 import org.apache.myfaces.tobago.taglib.decl.HasMarkup;
043
044 import javax.servlet.jsp.JspException;
045 import javax.servlet.jsp.tagext.BodyTagSupport;
046
047 /**
048 * Render a set of radiobuttons.
049 *
050 * @since 1.0.13
051 */
052
053 @Tag(name = "selectOneRadio")
054 @ExtensionTag(baseClassName = "org.apache.myfaces.tobago.taglib.component.SelectOneRadioTag")
055 public class SelectOneRadioExtensionTag extends BodyTagSupport
056 implements HasId, HasValue, HasValueChangeListener, IsDisabled, HasMarkup,
057 IsReadonly, HasOnchange, IsInline, HasLabel, HasLabelWidth, IsRequired,
058 IsRendered, HasBinding, HasTip, HasValidator, HasConverter, HasRenderRange, HasTabIndex {
059
060 private String required;
061 private String value;
062 private String valueChangeListener;
063 private String disabled;
064 private String readonly;
065 private String onchange;
066 private String inline;
067 private String label;
068 private String rendered;
069 private String binding;
070 private String tip;
071 private String validator;
072 private String converter;
073 private String labelWidth;
074 private String tabIndex;
075 private String focus;
076 private String renderRange;
077 private String markup;
078
079 private LabelExtensionTag labelTag;
080 private SelectOneRadioTag selectOneRadioTag;
081
082 @Override
083 public int doStartTag() throws JspException {
084
085 labelTag = new LabelExtensionTag();
086 labelTag.setPageContext(pageContext);
087 if (label != null) {
088 labelTag.setValue(label);
089 }
090 if (tip != null) {
091 labelTag.setTip(tip);
092 }
093 if (rendered != null) {
094 labelTag.setRendered(rendered);
095 }
096 if (labelWidth != null) {
097 labelTag.setColumns(labelWidth + ";*");
098 }
099 if (markup != null) {
100 labelTag.setMarkup(markup);
101 }
102 labelTag.setParent(getParent());
103 labelTag.doStartTag();
104
105 selectOneRadioTag = new SelectOneRadioTag();
106 selectOneRadioTag.setPageContext(pageContext);
107 if (value != null) {
108 selectOneRadioTag.setValue(value);
109 }
110 if (valueChangeListener != null) {
111 selectOneRadioTag.setValueChangeListener(valueChangeListener);
112 }
113 if (validator != null) {
114 selectOneRadioTag.setValidator(validator);
115 }
116 if (converter != null) {
117 selectOneRadioTag.setConverter(converter);
118 }
119 if (binding != null) {
120 selectOneRadioTag.setBinding(binding);
121 }
122 if (onchange != null) {
123 selectOneRadioTag.setOnchange(onchange);
124 }
125 if (disabled != null) {
126 selectOneRadioTag.setDisabled(disabled);
127 }
128 if (inline != null) {
129 selectOneRadioTag.setInline(inline);
130 }
131 if (focus != null) {
132 selectOneRadioTag.setFocus(focus);
133 }
134 if (id != null) {
135 selectOneRadioTag.setId(id);
136 }
137 if (readonly != null) {
138 selectOneRadioTag.setReadonly(readonly);
139 }
140 if (required != null) {
141 selectOneRadioTag.setRequired(required);
142 }
143 if (tabIndex != null) {
144 selectOneRadioTag.setTabIndex(tabIndex);
145 }
146 if (renderRange != null) {
147 selectOneRadioTag.setRenderRange(renderRange);
148 }
149 if (markup != null) {
150 selectOneRadioTag.setMarkup(markup);
151 }
152
153 selectOneRadioTag.setParent(labelTag);
154 selectOneRadioTag.doStartTag();
155
156 return super.doStartTag();
157 }
158
159 @Override
160 public int doEndTag() throws JspException {
161 selectOneRadioTag.doEndTag();
162 labelTag.doEndTag();
163 return super.doEndTag();
164 }
165
166 @Override
167 public void release() {
168 super.release();
169 binding = null;
170 onchange = null;
171 disabled = null;
172 inline = null;
173 label = null;
174 labelWidth = null;
175 converter = null;
176 validator = null;
177 readonly = null;
178 rendered = null;
179 required = null;
180 tip = null;
181 value = null;
182 valueChangeListener = null;
183 tabIndex = null;
184 selectOneRadioTag = null;
185 labelTag = null;
186 focus = null;
187 renderRange = null;
188 markup = null;
189 }
190
191 public void setRequired(String required) {
192 this.required = required;
193 }
194
195 public void setValue(String value) {
196 this.value = value;
197 }
198
199 public void setValueChangeListener(String valueChangeListener) {
200 this.valueChangeListener = valueChangeListener;
201 }
202
203 public void setValidator(String validator) {
204 this.validator = validator;
205 }
206
207 public void setDisabled(String disabled) {
208 this.disabled = disabled;
209 }
210
211 public void setReadonly(String readonly) {
212 this.readonly = readonly;
213 }
214
215 public void setOnchange(String onchange) {
216 this.onchange = onchange;
217 }
218
219 public void setConverter(String converter) {
220 this.converter = converter;
221 }
222
223 public void setInline(String inline) {
224 this.inline = inline;
225 }
226
227 public void setLabel(String label) {
228 this.label = label;
229 }
230
231 public void setRendered(String rendered) {
232 this.rendered = rendered;
233 }
234
235 public void setBinding(String binding) {
236 this.binding = binding;
237 }
238
239 public void setTip(String tip) {
240 this.tip = tip;
241 }
242
243 public void setLabelWidth(String labelWidth) {
244 this.labelWidth = labelWidth;
245 }
246
247 public void setTabIndex(String tabIndex) {
248 this.tabIndex = tabIndex;
249 }
250
251 public void setFocus(String focus) {
252 this.focus = focus;
253 }
254
255 public void setRenderRange(String renderRange) {
256 this.renderRange = renderRange;
257 }
258
259 public void setMarkup(String markup) {
260 this.markup = markup;
261 }
262 }