快速业务通道

了解Eclipse中的JFace数据绑定,第3部分: 使用高级功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
Model presentationModel = \   new ContactPresentationModel(contact);   ContactForm contactForm = new ContactForm(shell, presentationModel);   shell.pack();   shell.open();   while (!shell.isDisposed()) {   if (!display.readAndDispatch())    display.sleep();   }   display.dispose(); }

更改 Presentation Model

现在已将代码分离为 UI、Presentation Model 和域模型层,您可以轻松地修改代码以满足更改要求。假定客户机需要更直观并且拥有如图 6 所示的带 Married 复选框的 UI,选中/取消选中此框将同时启用/禁用 Spouse 字段和 Years Married 字段。

图 6. 添加直观的复选框后的示例 UI

了解Eclipse中的JFace数据绑定,第3部分: 使用高级功能(7)

时间:2011-02-11 IBM Scott Delap

由于要更改 Presentation Model 的功能,因此需要修改测试以验证实现内容。清单 9 显示了经过调整的测试方法。复选框将处理启用状态的更改,因此只需更改侦听程序中另一个逻辑来根据需要清空与两个婚姻状况相关的字段。

清单 9. 重构后的启用测试

public void testYearsMarriedEnablement() {    Contact contact = new Contact();    ContactPresentationModel presentationModel = new ContactPresentationModel(        contact);    assertFalse(presentationModel.getEnableYearsMarried());    presentationModel.setEnableYearsMarried(true);    presentationModel.getContact().setSpouse("spouse");    presentationModel.getContact().setYearsMarried("5");    presentationModel.setEnableYearsMarried(false);    assertNull(presentationModel.getContact().getSpouse());    assertNull(presentationModel.getContact().getYearsMarried()); }

要使测试能够通过,则需重构 ContactPresentationModel 构造函数和 EnablementPropertyChangeListener,如清单 10 所示。

清单 10. 修改 Presentation Model 使其能够显式启用

public ContactPresentationModel(Contact contact) {    this.contact = contact;    EnablementPropertyChangeListener enablementPropertyChangeListener =     new EnablementPropertyChangeListener();    addPropertyChangeListener("enableYearsMarried",        enablementPropertyChangeListener); } private class EnablementPropertyChangeListener implements      PropertyChangeListener {    public void propertyChange(PropertyChangeEvent evt) {      if (!getEnableYearsMarried()) {        getContact().setYearsMarried(null);     getContact().setSpouse(null);      }    } }

最后还需要做的是修改 UI。需要将标签和复选框添加到 createControls() 方法中。然后必须将这个新复选框绑定到 Presentation Model。最后,为了像 Years Married 字段一样可以启用/禁用 Spouse 字段,请将 Spouse 字段的已启用属性绑定到 Presentation Model 中的同一位置。这些更改如清单 11 所示。

清单 11. 将复选框添加到 UI 中

private void bindGUI(ContactPresentationModel presentationModel) { . . .    ctx.bind(chkIsMarried,      new Property(presentationModel, "enableYearsMarried"),   new BindSpec());    ctx.bind(new Property(spouseTxt, "enabled"),      new Property(presentationModel, "enableYearsMarried"),   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号