UI 表单对您构建所在的多页面编辑器提供了基本支持。
您应该通过扩展 FormEditor
来开始构建 UI 表单多页面编辑器:
public class SimpleFormEditor extends FormEditor { public SimpleFormEditor() { } protected FormToolkit createToolkit(Display display) { // Create a toolkit that shares colors between editors. return new FormToolkit(ExamplesPlugin.getDefault().getFormColors( display)); } protected void addPages() { try { addPage(new FreeFormPage(this)); addPage(new SecondPage(this)); addPage(new ThirdPage(this)); addPage(new MasterDetailsPage(this)); addPage(new PageWithSubPages(this)); } catch (PartInitException e) { // } } public void doSave(IProgressMonitor monitor) { } public void doSaveAs() { } public boolean isSaveAsAllowed() { return false; }
一种非常简单的方法是按上面的方式创建页面并添加它们。每个页面都需要实现
FormPage
和重载 createFormContent(IManagedForm managedForm)
方法。显然,在页面中已创建了受管表单,您应该在封装的表单中创建内容,并且注册任何需要成为受管生命周期一部分的表单部件。
除表单页面以外,可以添加一个或多个文本编辑器作为原始源代码来代替 GUI 页面。为了完成此任务,应该调用超类中的“addPage(IEditorPart, IEditorInput input)
”方法。
您可以通过许多方法编写基于表单的多页面编辑器。方法很大程度上取决于您正在编辑的内容的类型以及用户的熟练程度。您可以通过两种方法实现目标:
如果一些典型的用户不常使用编辑器、原始源代码难以手工编辑或较为复杂或者用户并不精通技术等,则您就应该创建完全能够编辑内容每一方面的完整页面,而不需要转到原始源代码。在这种方法中,源代码页面仅用于偶尔进行的验证,而不是用于常规工作。因此,可以不使用基本文本编辑器。PDE 扩展点模式编辑器属于这个组。
如果用户技术较好,能够手工编辑文件,但时不时会借助一些帮助,您就应该考虑提供一种混合的体验 - 提供带有所有添加项(如递增轮廓、上下文帮助和语法突出显示等)的优良源代码编辑器。接着,在表单页面中添加难以从源代码实现的复杂附加值功能。根据经验我们可知,如果附加值并不重要或者存有争议,就很难说服经验丰富的用户从源代码编辑过渡。但是,GUI 页面中才能提供的且质量非常高的功能就很容易使用。
创建混合使用 GUI 和源代码页面的高质量多页面编辑器也有它的挑战。接受用户频繁地切换页面意味着需要良好的底层内容模型。该模型应该与底层文档直接相关,以便当用户直接输入文本时以及当他们通过 GUI 页面在结构上进行更改时,该模型都处于同步状态(不要忘记当编辑器仍然运行时由其它工作台操作引起的间接更改)。