科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Eclipse设计实现可重用的SWT构件

Eclipse设计实现可重用的SWT构件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文从创建一个简单的SWT Tree Table开始,引入可重用的用户界面构件这个开发人员普遍关心的问题,然后分析Eclipse的用户界面的一些设计模式,循序渐进的向读者展示了如何设计实现一个精巧的高度可重用的TreeTable构件。

作者:翁长河 来源:论坛整理 2007年11月21日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

增加行背景色功能

  我们还记得ITreeTableAdapter接口的方法getBackgroundColor,如图12所示,该方法就是要返回特定数据行的背景色,目前为止,EmployeeTreeTableAdapter的该方法没有实现具体的逻辑,我们将这里演示如何给特定的行数据增加背景色, 我们需要给EmployeeTreeTableAdapter 增加清单16中的代码。。

  图12:ITreeTableAdapter的接口

  ITreeTableAdapter的接口

  清单16:EmployeeTreeTableAdapter中增加的代码

private Color depColor=new Color(null, 255,00,00);
public Color getBackgroundColor(Object element) {
if(element instanceof Department)
return depColor;
else return null;
}

  此外还需要在TreeTable中的setInput方法中做一些修改,代码见清单17。

  清单17:TreeTable的代码变更

public void setInput(Object[] inputs){
if(treeViewer!=null)
treeViewer.setTableInput(inputs);
initColumnBGColorProperty();
}

private void initColumnBGColorProperty() {
    TreeItem[] items = getTree().getItems();
    for (int i = 0; i < items.length; i++) {
    TreeItem item = items[i];
    Color rowItemBGColr
    =adapterFactory.getAdapter(item.getData()).getBackgroundColor(item.getData());
    if(rowItemBGColr!=null)
    item.setBackground(rowItemBGColr);
}

  此时运行测试窗口,我们成功的给部门行增加了红色背景色,效果见图13。读者可以预料到,一旦需求发生变化,例如需要给某个特定的雇员以特别的颜色显色,我们可以快速的定位到EmployeeTreeTableAdapter,简单的修改getBackgroundColor方法就可以,可见细粒度的控制可以快速的定位代码,灵活的响应变化。

  图13:部门行增加背景色的界面效果

  部门行增加背景色的界面效果

  因此可以了解到,在这样一种体系结构下,我们的代码可以很容易的扩展去精确控制TreeTable的行为,并且在扩展之后仍然保持很清晰,简洁的体系结构。由于我们集中的控制各个方面的变化,我们的扩展是正交的,功能上互相没有影响,代码上也没有重复。如果此时我们还在使用第一部分的代码,如果你有多个TreeTable的实例,恐怕免不了又要重复的拷贝很多的代码。 我们还可以给TreeTable增加了编辑、过滤、菜单、列顺序设置、列隐藏和平面显示等功能,可以在项目中大大的提高开发的效率,限于篇幅,这里不加赘述,有兴趣的读者可以参考本文的内容自行实现。

  6. 总结

  本文向读者展示了如何编写可重用的用户构件界面,并提供了一个TreeTable的例子,本文的读者可以根据需要自由的扩展,创建功能更为丰富的TreeTable构件。在大型的RCP项目中,系统会中有很多的对象模型,用户界面可能有数十个表格。使用这种可重用的构件,我们可以快速的创建复杂的界面,降低工作量。并且由于设计上的灵活性,可以极大的降低代码的维护成本和需求变更引发的工作量。良好的可扩展性将会使你的应用时刻保持清晰的架构,能够快速响应模型的变化。

  通过本文的一些实践,读者也可以思考一下其他方面的可重用性设计,如果你热爱程序员这个工作,就应当不懈的坚持下去,最终期望能够实现“厚集薄发”,将越来越多的冗余代码重构成精简的可重用代码,提高程序质量和可维护性。我们的代码应该看上去和机器生成的一样整齐和简洁,不需要太多额外的注释(细粒度的类名和方法名都是自解释的),每一个类和方法的都是那样的优美、短小而精悍,系统的结构清晰而灵活,不再害怕变化,即使经过很久的演进依然保持良好的结构和旺盛的生命力。这也是我们作为程序员的共同的目标。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章