package com.venky.swf.views.controls.page.text;
import com.venky.cache.Cache;
import com.venky.core.string.StringUtil;
import com.venky.swf.db.Database;
import com.venky.swf.db.JdbcTypeHelper.TypeConverter;
import com.venky.swf.views.controls._IControl;
import com.venky.swf.views.controls.page.layout.DivOptionGroup;
import com.venky.swf.views.controls.page.text.RadioGroup.Radio;
public class RadioGroup extends DivOptionGroup<Radio>{
private static final long serialVersionUID = -7730477350367195429L;
Cache<String,Radio> valueRadioMap = new Cache<String, RadioGroup.Radio>() {
private static final long serialVersionUID = 8020138556369377168L;
@Override
protected Radio getValue(String k) {
return new Radio(k);
}
};
public void setEnabled(final boolean enabled){
for (_IControl c : getContainedControls()){
if (c instanceof Radio){
Radio r = (Radio)c;
r.setEnabled(enabled);
}
}
}
public void setReadOnly(final boolean readonly){
for (_IControl c : getContainedControls()){
if (c instanceof Radio){
Radio r = (Radio)c;
r.setReadOnly(readonly);
}
}
}
public void setForm(String formId){
for (_IControl c : getContainedControls()){
if (c instanceof Radio){
Radio r = (Radio)c;
r.setForm(formId);
}
}
}
public Radio createOption(String text,String value){
Radio radio = valueRadioMap.get(value);
radio.setText(text);
addControl(radio);
if (name != null){
radio.setName(name);
}
return radio;
}
private String name = null;
@Override
public void setName(String name){
this.name = name;
for (_IControl c :getContainedControls()){
if (c instanceof Radio){
Radio r = (Radio)c;
r.setName(name);
}
}
}
@Override
public void setValue(Object value){
for (_IControl c :getContainedControls()){
if (c instanceof Radio){
Radio r = (Radio)c;
r.setChecked(false);
}
}
valueRadioMap.get(StringUtil.valueOf(value)).setChecked(true);
}
public static class Radio extends Input {
/**
*
*/
private static final long serialVersionUID = 2609222149783319414L;
public Radio(Object value) {
super();
setProperty("value", StringUtil.valueOf(value));
}
@Override
protected String getInputType() {
return "radio";
}
public void setChecked(Object value){
@SuppressWarnings("unchecked")
TypeConverter<Boolean> converter = (TypeConverter<Boolean>) Database.getJdbcTypeHelper("").getTypeRef(Boolean.class).getTypeConverter();
if (converter.valueOf(String.valueOf(value))){
super.setProperty("checked", value);
}else {
super.remove("checked");
}
}
}
}