了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能
2009-12-14 00:00:00 来源:WEB开发网最后,ContactPresentationModel 的构造函数需要将这个新侦听程序与 Contact 的名称属性和配偶属性绑定起来,如清单 6 所示。
清单 6. 向联系人的字段中添加侦听程序EnablementPropertyChangeListener enablementPropertyChangeListener
= new EnablementPropertyChangeListener();
this.contact.addPropertyChangeListener("name",
enablementPropertyChangeListener);
this.contact.addPropertyChangeListener("spouse",
enablementPropertyChangeListener);
如果在 ContactPresentationModel 测试上单击鼠标右键并将它作为一个 JUnit 测试来运行,则会看到令人满意的 JUnit 成功绿栏,如图 5 所示。
图 5. 测试成功后的 JUnit 视图
以一种完全可测试的不依赖 UI 的方式重写后,现在就有了与受损代码示例相同的业务逻辑。
将 Presentation Model 与 UI 同步
您可能想知道哪些组件必须做 JFace 数据绑定。如您所见,Presentation Model 使代码更易于测试。但是,Presentation Model 中的数据和状态仍没有被反映到 UI 中。自己编写所有同步代码会很费事。幸运的是,可以使用 JFace 数据绑定。通过更改构造函数和 bindGUI() 方法可以轻松地重构受损示例中的 ContactForm,如清单 7 所示。
清单 7. 重构的 ContactFormpublic ContactForm(Composite c, ContactPresentationModel
presentationModel) {
this.contact = new Contact();
createControls(c);
createButtons(c);
bindGUI(presentationModel);
}
private void bindGUI(ContactPresentationModel
presentationModel) {
DataBindingContext ctx = createContext();
ctx.bind(nameTxt,
new Property(presentation\
Model.getContact(), "name"),
new BindSpec());
ctx.bind(spouseTxt,
new Property(presentation\
Model.getContact(), "spouse"),
new BindSpec());
ctx.bind(yearsMarriedTxt,
new Property(presentation\
Model.getContact(), "yearsMarried"),
new BindSpec());
ctx.bind(new Property(yearsMarriedTxt, "enabled"),
new Property(presentation\
Model, "enableYearsMarried"),
new BindSpec());
}
- ››Eclipse 3.7反编译插件的安装
- ››eclipse CDT NDK环境搭建步骤
- ››Eclipse 如何自定义java class注释
- ››eclipse.ini内存设置
- ››Eclipse+PyDev离线配置Python开发环境
- ››Eclipse下jQuery文件报错解决方案
- ››Eclipse快捷键与使用技巧
- ››Eclipse 常用快捷键 常用技巧My Eclipse常用快捷键...
- ››Eclipse快捷键二
- ››Eclipse快捷键一
- ››Eclipse+SVN+Google Code配置过程
- ››eclipse中开发android程序时,打开layout配置文件自...
更多精彩
赞助商链接