Eclipse Forms Mission
Eclipse Forms是一个贯穿所有Eclipse UI的基于SWT和JFace的来提供可移植Web风格用户界面的可选Rich Client插件。
Eclipse Forms打破了只能用于特定Eclipse UI(编辑器,视图,向导,窗口)的模式。为了满足开发者的需要,一个Eclipse form能够以任何UI的形式出现。UI开发者能够使用为他们的任务选择最合适的概念。
Eclipse不是用来设计完全替代SWT或JFace的.这个插件只有一些精心挑选的专有定制组件 ,布局和支持类,以便使用SWT和JFace时达到预期效果.
很明显的,一个Eclipse Form通常看起来象网页一样.事实是form的纲领可行性的各方面都是使forms强大的和具有吸引力.要同过浏览器达到这样的弹性需要DOM支持,并且经常几乎是聚耦的.Eclipse Forms是可移植的,并且是在SWT和JFace之上写的.
Eclipse Forms已经在3.0 release中重写来只依赖于平台UI插件,而不再依赖于PDE UI插件.虽然它们还不是RCP的最小化部分,但是你能够在任何RCP程序中添加Eclipse Forms.
要点不能被低估.当构建Eclipse Forms时,你是在使用SWT.没有Eclipse Forms按钮,也没有Eclipse Forms tree组件等等.你只是使用Eclipse Forms来让现有的组件达到富客户体验.
Eclipse Forms是通过下列元素来达到目的的:
"form"概念和视图,编辑器等是一个层次的概念.
一个工具包(toolkit)来管理颜色,超链接组还有其它方面.并且充当许多SWT组件的工厂类.
一个新的layout manager来管理布局,和HTML表格相似.
一组定制的组件用来配合form.(超链接,图片超链接,滚动组合<scrollable composite>,段<section>)
一个各个页面都是forms的多页面编辑器(e.g. PDE manifest编辑器)
虽然Eclipse Forms的设计中没有任何阻止您在一个窗口中建立form.但是大部分时候都是在视图和编辑器中使用forms,而不是窗口或向导.的确,在一个普通的窗口或向导中加入form看上去有点怪,毕竟其他部分都是普通的SWT组件.无论如何,在未来,这是一个探索的方向.
Baby steps
在您的用户接口中使用Eclipse Forms非常简单.在开始前你在插件依赖部分加入org.eclipse.ui.forms插件.我们会创建一个拥有form的
Eclipse view,然后往里面填充内容.注意这篇文章插件的所有代码都以zip文件格式提供下载.
Hello, Eclipse Forms
我们从往view里添加一个空白form来开始游戏:
public class FormView extends ViewPart {
private FormToolkit toolkit;
private ScrolledForm form;
/**
* The constructor.
*/
public FormView() {}
/**
* This is a callback that will allow us to create the viewer and
* initialize it.
*/
public void createPartControl(Composite parent) {
toolkit = new FormToolkit(parent.getDisplay());
form = toolkit.createScrolledForm(parent);
form.setText("Hello, Eclipse Forms");
}
/**
* Passing the focus request to the form.
*/
public void setFocus() {
form.setFocus();
}
/**
* Disposes the toolkit
*/
public void dispose() {
toolkit.dispose();
super.dispose();
}
}
这个视图应该看起来象这样:

图片2
注意我们用到了可滚动的form,因为我们把它放到了一个可以改变大小的视图中.在更复杂的环境里,比如一个form需要作为一个布局的一部分,没有滚动能力的form也可以用.在这种情况下,我们会调用FormToolkit.createForm(),让外层的parent来解决需要滚动条的问题。
