package au.com.langdale.ui.binding; import org.eclipse.swt.widgets.Button; import au.com.langdale.ui.builder.Assembly; public class RadioTextBinding extends TextBinding { private Button[] radios = new Button[0]; private String[] values = new String[0]; public RadioTextBinding(Validator validator, String initial) { super(validator, initial); } public void bind(String name, String[] nameValues, Assembly plumbing) { bind(name, plumbing, null); radios = new Button[nameValues.length/2]; values = new String[nameValues.length/2]; for(int ix = 0; ix + 1 < nameValues.length; ix += 2) { radios[ix/2] = plumbing.getButton(nameValues[ix]); values[ix/2] = nameValues[ix+1]; } } @Override protected String createSuggestion() { for(int ix = 0; ix < radios.length; ix++) { if( radios[ix].getSelection()) return values[ix]; } return null; } @Override public void refresh() { super.refresh(); for(int ix = 0; ix < radios.length; ix++) { radios[ix].setSelection(values[ix].equals(getValue())); } } }