WEB开发网
开发学院软件开发Java 了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使... 阅读

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

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 最后,ContactPresentationModel 的构造函数需要将这个新侦听程序与 Contact 的名称属性和配偶属性绑定起来,了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(8),如清单 6 所示,清单 6. 向联系人的字段中添加侦听程序Enableme

最后,ContactPresentationModel 的构造函数需要将这个新侦听程序与 Contact 的名称属性和配偶属性绑定起来,如清单 6 所示。


清单 6. 向联系人的字段中添加侦听程序
EnablementPropertyChangeListener enablementPropertyChangeListener 
 = new EnablementPropertyChangeListener(); 
this.contact.addPropertyChangeListener("name", 
enablementPropertyChangeListener); 
this.contact.addPropertyChangeListener("spouse", 
enablementPropertyChangeListener); 

如果在 ContactPresentationModel 测试上单击鼠标右键并将它作为一个 JUnit 测试来运行,则会看到令人满意的 JUnit 成功绿栏,如图 5 所示。


图 5. 测试成功后的 JUnit 视图
了解 Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能

以一种完全可测试的不依赖 UI 的方式重写后,现在就有了与受损代码示例相同的业务逻辑。

将 Presentation Model 与 UI 同步

您可能想知道哪些组件必须做 JFace 数据绑定。如您所见,Presentation Model 使代码更易于测试。但是,Presentation Model 中的数据和状态仍没有被反映到 UI 中。自己编写所有同步代码会很费事。幸运的是,可以使用 JFace 数据绑定。通过更改构造函数和 bindGUI() 方法可以轻松地重构受损示例中的 ContactForm,如清单 7 所示。


清单 7. 重构的 ContactForm
public 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()); 
 
} 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:了解 Eclipse JFace

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接