Data binding UpdateValueStrategy和自定义将多个GUI元素转换为一个属性

Data binding UpdateValueStrategy和自定义将多个GUI元素转换为一个属性,data-binding,javabeans,eclipse-databinding,Data Binding,Javabeans,Eclipse Databinding,我正在使用eclipse与bean的数据绑定和SWT java应用程序。我成功地用我的模型绑定了几个文本字段和复选框。现在我有三个单选按钮: 图形用户界面: 型号: 现在我想将这三个单选按钮绑定到属性userFilter。转换逻辑应该是这样的: GUI到模型的转换: 模型到GUI的转换: 我读过关于具体的UpdateValueStrategies和转换的文章,但并没有真正开始。有谁能帮我举个简单的例子吗?提前谢谢 ... Model model = new Model(); ... Button

我正在使用eclipse与bean的数据绑定和SWT java应用程序。我成功地用我的模型绑定了几个文本字段和复选框。现在我有三个单选按钮:

图形用户界面:

型号:

现在我想将这三个单选按钮绑定到属性userFilter。转换逻辑应该是这样的:

GUI到模型的转换:

模型到GUI的转换:

我读过关于具体的UpdateValueStrategies和转换的文章,但并没有真正开始。有谁能帮我举个简单的例子吗?提前谢谢

...
Model model = new Model();
...
Button btnAllUsers = new Button(grpExport, SWT.RADIO);
Button btnBatchUsersOnly = new Button(grpExport, SWT.RADIO);
Button btnCurrentBatchOnly = new Button(grpExport, SWT.RADIO);
...

// here comes the big question mark... :(
IObservableValue swtObsBtnAllUsers  = SWTObservables.observeSelection(btnAllUsers);
IObservableValue beanObsUserFilter = BeansObservables.observeValue(model, "userFilter");
bindingContext.bindValue(swtObsBtnAllUsers, beanObsUserFilter);
...
public class Model {
    public enum UserFilter {
        ALL_USERS, BATCH_USERS_ONLY, CURRENT_BATCH_ONLY
    }

    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
    private UserFilter userFilter;

    public void addPropertyChangeListener(...) {...}

    public void removePropertyChangeListener(...) {...}
}
if (btnAllUsers != null && btnBatchUsersOnly != null && btnCurrentBatchOnly != null) {
if (btnAllUsers.getSelection()) {
        model.userFilter = UserFilter.ALL_USERS;
    } else if (btnBatchUsersOnly.getSelection()) {
        model.userFilter = UserFilter.BATCH_USERS_ONLY;
 } else {
        model.userFilter = UserFilter.CURRENT_BATCH_ONLY;
    }
}
if (btnAllUsers != null && btnBatchUsersOnly != null && btnCurrentBatchOnly != null) {
    btnAllUsers.setSelection(model.getUserFilter() == UserFilter.ALL_USERS);
    btnBatchUsersOnly.setSelection(model.getUserFilter() == UserFilter.BATCH_USERS_ONLY);
    btnCurrentBatchOnly.setSelection(model.getUserFilter() == UserFilter.CURRENT_BATCH_ONLY);
}