Java 示例编辑器继承了 AbstractTextEditor 中的许多有用的缺省行为。文本编辑框架处理可通过覆盖 AbstractTextEditor 中的方法来定制的其它几项职责。浏览此类及其子类的实现以了解如何在框架中定制行为。
下面是可以配置的一些有用的框架功能部件。
文本编辑器通常添加可以控制编辑器的表示和行为的用户首选项。在文本框架中,每个文本编辑器实例都具有相关联的用于访问用户首选项的首选项库。可以使用编辑器来设置此首选项库,也可以从已经在框架中使用的首选项库中继承。
对于 Java 示例编辑器,它继承由 TextEditor 初始化的首选项库。这就是由工作台编辑器插件定义的首选项库。
protected void initializeEditor() { ... setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore()); }可在常规 > 编辑器和常规 > 编辑器 > 文本编辑器首选项页面中处理编辑器插件首选项。
如果您不想对编辑器使用标准的工作台文本首选项,则可以设置另外的首选项库。这通常是通过覆盖 initializeEditor 并设置您自己的首选项库来完成的。如果确实使用的是您自己的首选项库,则将还需要覆盖 handlePreferenceStoreChanged() 方法(每当更新首选项时就会触发该方法)。
键绑定上下文对于建立键绑定的查找顺序很有用。具有上下文键绑定可以降低不同插件产生冲突的键序列的机率。缺省情况下,工作台在一般上下文中用于处理窗口或对话框。当文本编辑器变得活动时,它就会负责将上下文重新设置为文本编辑器上下文,以使特定于编辑器的键绑定将是活动的。
在平台文本框架中,每个文本编辑器实例都具有相关联的一组键绑定作用域。当它变得活动时,它将负责设置正确的作用域。AbstractDecoratedTextEditor 定义此作用域并负责使它活动。作用域是在从构造函数中调用的方法中指定的:
protected void initializeKeyBindingScopes() { setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" }); }
方法的自变量是对上下文定义的一组标识。如果想要编辑器定义它自己的键绑定上下文,则可以在编辑器类中覆盖此方法,也可以使用 setKeybindingScopes 来动态设置作用域。
必须在 org.eclipse.ui.contexts 扩展点中使用相应的标识来定义作用域本身。以下是文本编辑上下文的定义。
<extension point="org.eclipse.ui.contexts"> <context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context> ...
(注意:我们在此讨论中使用的术语作用域和上下文是可交换的。文本类中的方法名仍然将键绑定上下文称为作用域。这些方法名将上下文的原始实现反映为作用域,使用的是过时的术语。)