将上下文添加到我的视图并将键绑定到此上下文

时间:2014-01-07 11:17:02

标签: eclipse eclipse-rcp eclipse-plugin

我的问题与问here相同。但是那里提供的解决方案对我没有用。

我已经在我的观点createPartControl greg-449 的答案中激活了上下文。

IContextService contextService =  IContextService)getSite().getService(IContextService.class);        
        contextService.activateContext(myViewContextId);

当我的视图被激活时,我在eclipse控制台上得到了警告

  

!消息 CTRL + F 发生冲突:

     

绑定( CTRL + ˚F,       ParameterizedCommand(命令( myFindCmdId ,查找,           ,           类别(org.eclipse.core.commands.categories.autogenerated,Uncategorized,自动生成或没有类别的命令,true),           org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@f41266e,           ,,真),空)       org.eclipse.ui.defaultAcceleratorConfiguration,       的 myViewContextId ,,,系统)

     

绑定( CTRL + ˚F,       ParameterizedCommand(命令(org.eclipse.ui.edit.findReplace,查找和替换,           查找并替换文字,           类别(org.eclipse.ui.category.edit,编辑,空,真)           org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@24ad92b0,           ,,真),空)       org.eclipse.ui.defaultAcceleratorConfiguration,       org.eclipse.ui.contexts.window ,,,系统)

=== Plugin.xml有====

<extension
     point="org.eclipse.ui.contexts">
  <context
        id=<myViewContextId>
        name="abc">
  </context>
</extension>
<extension
     point="org.eclipse.ui.bindings">
  <key
        commandId=<myFindCmdId>
        contextId=<myViewContextId>
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
        sequence="M1+F">
  </key> 
  //some more key binding here
</extension> 

2 个答案:

答案 0 :(得分:2)

要避免冲突消息,请使用org.eclipse.ui.bindings扩展点定义您自己的密钥绑定方案,并将标准org.eclipse.ui.defaultAcceleratorConfiguration指定为方案的父ID。将你的密钥绑定放在这个新方案中。

使用:

org.eclipse.ui/KEY_CONFIGURATION_ID=schemeid

plugin_customization.ini中选择您的方案作为默认方案。

更多here

注意:如果您的 Ctrl + F 是一个Find命令,您应该挂钩到现有的Eclipse find / replace retargetable操作,而不是定义新的命令和键绑定。

因此,对于Find,不要定义任何命令,处理程序或键绑定。而是在ViewPart中使用

IActionBars bars = getViewSite().getActionBars();

bars.setGlobalActionHandler(ActionFactory.FIND.getId(), your find Action);

答案 1 :(得分:1)

尝试将 parentId =&#34; org.eclipse.ui.contexts.window&#34; 添加到新上下文中:

<extension
     point="org.eclipse.ui.contexts">
  <context
        id=<myViewContextId>
        name="abc">
        parentId="org.eclipse.ui.contexts.window">
  </context>
</extension>