Eclipse RCP教程 – 25 – 按键绑定(Key bindings)

25.1. 在应用程序中使用按键绑定

你可以在你的Eclipse应用程序中定义按键绑定(快捷键)。这需要两个步骤,第一步你需要在应用程序模型的绑定上下文(Binding Context)节点输入内容。

然后,你需要在应用程序模型的绑定表格(BindingTable)节点为相关的绑定上下文输入按键绑定信息。绑定表格始终会指派给一个特定的绑定上下文。一个绑定上下文可以关联多个绑定表格。

绑定上下文被定义为层级关系,因此下层的按键绑定会覆盖上层中对应的按键绑定。

 20170530_008 尽管如此,绑定上下文用于按键绑定听起来类似于Eclipse上下文(IEclipseContext)用于依赖注入。尽管绑定上下文和Eclipse上下文(IEclipseContext)听起来有点类似,但其实绑定上下文用于按键绑定,而Eclipse上下文用来作为依赖注入的源。

25.2. JFace的绑定上下文的默认值

绑定上下文是通过ID来标识的。他们可以被指派给应用程序模型的一个窗口或者一个部件。这样可以定义哪个快捷键是对窗口可用,哪个快捷键对部件可用。

Eclipse JFace使用预定义的ID来标识绑定上下文。这些ID基于org.eclipse.jface.contexts.IContextIds类。JFace将属于对话框、窗口或同属二者的快捷键区分开来。

下面的表格给出了所支持的ID的一个概览及其有效性。

表格11 BindingContext的默认值

上下文ID 描述
org.eclipse.ui.contexts.dialogAndWindow 按键绑定对对话框和窗口都有效
org.eclipse.ui.contexts.dialog 按键绑定对对话框有效
org.eclipse.ui.contexts.window 按键绑定对窗口有效

例如,Ctrl+C(复制)应该被定义在dialogAndWindows中,因为它需要在任何地方有效,但F5(刷新)可能只需要定义给窗口,而不需要定义给对话框。

25.3. 定义快捷键

应用程序模型中的BindingTable节点允许你基于绑定上下文创建按键绑定。在这里你创建一个新的BindingTable模型元素,然后通过ID定义一个引用到上下文中。

在按键绑定中输入键序列以及这个快捷键相关联的命令。

20170604_201

控制键在不同的平台上是不一样的,比如Mac或者Linux。你可以使用Ctrl,但是这是硬编码。建议使用M1 – M4元键。

表格12 键匹配

控制键 WindowsLinux的映射 Mac的映射
M1 Ctrl Command
M2 Shift Shift
M3 Alt Alt
M4 Undefined Ctrl

 

这些值定义在SWTKeyLookup类中。

25.4. 激活绑定

如果定义了多个有效的按键绑定,默认情况下,ContextSet类会负责激活其中一个。ContextSet使用绑定上下文的层级来决定查找顺序。绑定上下文有多具体,取决于在它和根绑定上下文之间有多少个上级(它的层级数)。最低层级的绑定上下文被认为是第一层,根绑定上下文被认为是最后一层。

你可以使用EContextService服务,它允许你通过activateContext()deactivateContext()方法来直接激活或者停用一个绑定上下文。

25.5. 部件的按键绑定

你可以指派一个特定的绑定上下文在当部件被激活时激活。

20170604_202

当前被激活的绑定上下文中指派给部件的按键绑定会被激活,除此之外,你的全局按键绑定也仍然有效。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2017/06/eclipse-rcp-25/
百度已收录