一、SWT
SWT 是一种 low-level 图形库,它提供了标准的UI控制器,例如lists, menus, fonts, and colors, 因为图形库显露了当前视窗系统能提供的组件. "SWT 提供了有效的,便利方访问它实现的操作系统的UI工具." SWT小组是这样评价SWT的。
SWT的策略是尽可能使用本地计件( widgets)。这可以使得基于 SWT的应用程序的外观和本地窗口一样。所以,基于 SWT的系统是轻便的,本地化的
注意:SWT不依赖于Runtime或OSGI框架,它是独立的库,可以被Eclipse或RCP以外的应用程序使用。
二、JFace
尽管SWT提供了访问本地窗口系统的能力,但JFace使得通常的UI概念的结构更合理,更易使用。UI小组这样描述JFace:
“JFace是一个UI工具包,它能处理许多常见的编程工作。JFace是独立的窗口系统,独立于它的API及其实现,它于与SWT一些工作,而不是隐藏它”。
它包括了整个UI工具包组件,从图片到字体注册,文本支持,对话框和透视图框架,耗时操作的进度工具条。这些和其它JFace UI结构,例如actions,viewers,组成了Eclipse UI的基础。
三、UI Workbench
因为JFaces给SWT加入了结构化,工作台添加了表现层(presentation)和协作(coordinateion)给JFaces。对于用户来说,工作台由视图集和编辑器构成,他们被部署在一个特殊层中。工作台包括:
· 提供了基于部署(contribution-based)的UI扩展功能
· 定义了强大的UI范例,如窗口(windows),透视图(perspective),视图(views),编辑器(editors)和动作(actions)
1 . 基于部署的扩展-通过配置文件实现
尽管JFace引入了actions,preferences,wizards,windows等,工作台提供了扩展点机制,它允许插件通过申明定义UI元素。例如,wizard和preference页面扩展点简单的构建与相关的JFace结构。
然而,使用扩展来构建一个UI会在系统复杂性和性能方面从根本上影响UI的规模。声明扩展的根本目的是使得你的应用程序在需要的时候才会构建。
因为所有的扩展都是采用的延迟(lazily)加载的机制,应用程序的大小变得更合适。因为你的UI会越变越多,它包括了更多的视图,编辑器和动作。如果没有声明机制,那样的增长需要额外的加载和执行代码。增加了代码的数量和启动时间,应用程序也会变得无法管理。通过使用扩展,代码只有在需要的时候才会被加载。
2 .透视图,视图,编辑器
工作台给用户一系列窗口。在每一个窗口中,工作台允许用户像管理文件夹一样合理的组织相关的内容。透视图是一种可视的容器,它包含了需要给用户展示的视图和编辑器等内容。这些都被部署在透视图中。
下面列出了组织透视图中内容的方法:
· 将编辑与其它视图一起叠放
· 将视图与其它视图一起叠放
· 将视图与主工作台窗口分离
· 调整视图和编辑器的大小,最小或最大化编辑器
· 创建fast view并固定在窗口的边上