2013-04-05 41 views
2

我开发Eclipse RCP应用程序,并已定义了我的编辑自定义上下文(org.eclipse.ui.contexts)单键的键绑定。每当我调用我的编辑器时,都会激活此上下文。另外,我已经定义了一个单键绑定(org.eclipse.ui.bindings),我已经将范围限定在这个上下文中,当在编辑器上下文中输入时,它会调用一个命令/处理程序(我将使用这个例子中的字母'J')。我如何禁用Eclipse文本控件

一切按预期工作。当我启动/选择一个自定义编辑器时,上下文被激活,'J'执行我的处理程序。当我启动/选择视图部件时,我的自定义编辑器的上下文被取消激活,'J'不再执行处理程序。但是,当我点击窗口修剪区域中的某个文本小部件(比如快速访问字段)并键入字母'J'时,按键就会被消耗并执行我的处理程序,我不想要的行为。

其原因是,选择另一个工作台部分具有激活它的上下文和去激活前一个的效果。但是,单击工作台窗口区域中的其他任何地方(除另一部分以外)都不会停用前一个上下文。我确信这是一个设计,是一个完全合理的方法。但是,它阻止我定义单键密钥绑定。

有没有人一)运行到之前这个问题和b)如果是这样,你是怎么解决的呢?

现在我使用的涉及使用全球听众一个完整的黑客攻击,完全禁止在检测进入文本插件的键绑定服务,并重新启用它从文本小出口。

回答

0

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

documentation了解详情。

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