我的问题与问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>
答案 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>