加速键作用域用来为加速键定义相应上下文。工作台定义两个加速键作用域:
作用域指示何时加速键集(在活动加速键配置中)被认为是活动的。 作用域是在加速键集标记中声明的:
<extension point="org.eclipse.ui.acceleratorSets"> <acceleratorSet scopeId="org.eclipse.ui.globalScope" configurationId="org.eclipse.ui.emacsAcceleratorConfiguration"> <accelerator key="Ctrl+F4||Ctrl+X Ctrl+K" id="org.eclipse.ui.file.close"> </accelerator> <accelerator key="Ctrl+Shift+F4||Ctrl+X Ctrl+C" id="org.eclipse.ui.file.closeAll"> </accelerator> <accelerator key="Ctrl+X Ctrl+S" id="org.eclipse.ui.file.save"> </accelerator> ...
当前作用域是如何确定的?缺省情况下,工作台在全局作用域内运行。 当文本编辑器活动时,它将负责将作用域复位为文本编辑器作用域。 这是由工作台和文本编辑器代码处理的。大多数插件在定义它们时, 仅需要为它们的加速键集确定相应的作用域。
插件定义加速键集时,它通常将其分配给现有加速键作用域。但是, 如果插件定义新样式的编辑器,则您可能还想为加速键引入新作用域。例如, 对于多页编辑器,编辑器中的每页可能具有不同的作用域。
定义自已的作用域时,由您的插件来确保将相应的作用域根据编辑器的需要设置到 IKeyBindingService 中。 如何进行的详细讨论已超出了此文档的范围(双关语)。有关更多详细信息, 参考 IKeyBindingService 及其实现程序。
插件使用 org.eclipse.ui.acceleratorScopes 扩展点定义加速键作用域。下面显示全局和文本编辑器加速键配置的工作台标记:
<extension point="org.eclipse.ui.acceleratorScopes"> <acceleratorScope name="%GlobalAcceleratorScope.name" description="%GlobalAcceleratorScope.description" id="org.eclipse.ui.globalScope"> </acceleratorScope> <acceleratorScope name="%TextEditorAcceleratorScope.name" parentScope="org.eclipse.ui.globalScope" description="%TextEditorAcceleratorScope.description" id="org.eclipse.ui.textEditorScope"> </acceleratorScope> </extension>