基于控制反转创建 SWT 界面[转]
?
这篇文章很好的表达了逻辑与界面分离的思想。在eclipse的插件开发中,很常见!
?
文章内容:
?
![]()
![]()
![]()
回页首
![]()
![]()
回页首
![]()
![]()
回页首
![]()
![]()
回页首
BTT 简介
BTT 全称是 IBM WebSphere Multichannel Bank Transformation Toolkit 。 BTT 被广泛应用于银行领域,用来构建银行的多渠道解决方案,例如柜员、网银、ATM 等。
在这一章节中,我们以 IBM 的产品 BTT 为例,展示一下控制反转在 SWT 界面创建中的优雅之处。 BTT 的富客户端开发,不仅使用了 XML UI 作为其 SWT 界面表现的描述方式,同时提供了强大的工具支持,以可视化拖拽的形式,所见即所得的编辑基于 XML 的 SWT 界面,提高了 SWT 界面开发的效率,降低了 SWT 界面开发的入门门槛。
在这个示例章节中,我们希望创建出如下的登录界面,除了字体,颜色,排列对齐上的设置外,用户名的文本框,全长不得超过 8 个字符。
图 1. 登录界面![基于统制反转创建 SWT 界面[转]](http://img.reader8.net/uploadfile/jiaocheng/20140140/2738/2014012717384111444.jpg)
?
下面是使用 SWT 的 API 描述该界面的代码清单:
清单 1. 使用 SWT 的 API 描述该界面
?
在 XML Ui 引擎的初始化定义文件中,我们会规定每个标签所对应的包装实现类以及各种属性的转换器,截取部分定义显示如下:
清单 3. 部分定义
?
通过上面两段 XML 描述,可以验证上一章节中描述的大部分思想:
通过 XML 文件中的标签,描述需要创建并初始化的控件,例如 <Composite> 标签用以初始化 com.ibm.btt.rcp.xui.widgets.XUIComposite 控件。每个标签,对应的是控件的包装类。 包装类的种类,可以根据用户和业务的需要添加,更改和定制。同时,这些包装类,经过扩展,不仅仅可以支持 SWT 的控件,也可以支持例如 Swing 等其他 Java 界面展示的控件,因为在 BTT 的 XML UI 中,包装器控件都是高度抽象的。 控件的包装类不仅可以重定向设置 SWT 控件的一般属性,也可以包含 SWT 控件可定义属性之外的其他属性,用以重用某些业务逻辑。例如 Text 控件的最大长度属性,这是最简单的也是最容易描述该场景的属性。如果有对文本控件最大长度的限制,仅需要将相应的逻辑抽取并定义在包装类中,同时公开该属性的设置方法即可。 通过 XML 文档标签之间的父子关系,定位控件之间的父子逻辑。例如,Composite 标签和 Label 标签之间的父子关系。 通过标签的属性定义,描述控件的相应属性,例如以 Label 标签的 background 属性来描述标签控件的背景色属性。 使用转换器,可以将 XML 文档中的字符串定义自动转化为 SWT 控件所需要的各种对象类型,例如 ColorConverter 。转换器的种类,可以根据用户包装类的需要进行扩展。BTT XML UI 技术,实现了本文中阐述的基于控制反转创建 SWT 用户界面的构想,拥有了:易于理解的用户界面描述,简洁的业务逻辑代码,易于更新部署和维护,易于与其他基于文档的界面技术之间相互转化等诸多优点。同时,BTT XML UI 作为面向银行前端的用户界面编辑框架,还包含如下不可忽视的优势:
回页首
![]()
![]()
回页首
?
王浩,任职于 IBM 中国软件开发中心,目前主要负责 eclipse 插件技术相关的开发工作,您可以通过 allenwang@cn.ibm.com 与他联系。
?