如何禁用Eclipse Text小部件中的单键键绑定

时间:2013-04-05 18:36:58

标签: eclipse eclipse-rcp eclipse-juno eclipse-plugin

我正在开发一个Eclipse RCP应用程序,并为我的编辑器定义了一个自定义上下文(org.eclipse.ui.contexts)。每当我调用我的一个编辑器时,都会激活此上下文。

此外,我已经定义了一个单键键绑定(org.eclipse.ui.bindings),我已将其作用于此上下文,当在编辑器上下文中键入时,调用命令/处理程序(我将使用这个例子的字母'J'。

一切都按预期工作。当我启动/选择我的一个自定义编辑器时,上下文被激活,'J'执行我的处理程序。当我启动/选择一个视图部件时,我的自定义编辑器的上下文被停用,'J'不再执行处理程序。但是,当我在窗口修剪区域的某处单击文本窗口小部件时 - 让我们说快速访问字段 - 并键入字母'J',按键击中并执行我的处理程序,我不想要的行为。

原因是选择另一个工作台部件会激活其上下文并停用前一个上下文。但是,单击工作台窗口区域中的任何其他位置(除了其他部分之外)不会取消激活先前的上下文。我确信这是设计的,是一种非常合理的方法。但是,它阻止我定义单键键绑定。

有没有人a)之前遇到过这个问题b)如果是这样,你是怎么解决的?

现在我正在使用一个完整的hack,它涉及使用全局侦听器完全禁用键绑定服务,检测进入Text小部件,并在退出Text小部件时重新启用它。

1 个答案:

答案 0 :(得分:0)

在扩展点<extension point="org.eclipse.ui.bindings">中,不指定将替换现有密钥的命令ID。

有关详细信息,请参阅documentation

commandId - 分配了此键绑定指定的键序列的命令的唯一标识符。如果此属性的值为空字符串,则将键序列分配给内部“无操作”命令。这对于可能从父母那里借用的特定密钥配置和上下文中的“取消定义”键绑定非常有用。