用于自定义编辑器的 Eclipse RCP 处理程序
Posted
技术标签:
【中文标题】用于自定义编辑器的 Eclipse RCP 处理程序【英文标题】:Eclipse RCP Handler for custom editor 【发布时间】:2022-01-14 04:25:45 【问题描述】:在我的自定义编辑器中,我希望处理程序仅在它在编辑器中执行时才被激活。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.editors">
<editor
id="testingpluginproject.editors.XMLEditor"
name="Sample XML Editor"
icon="icons/sample.png"
extensions="xxml"
class="testingpluginproject.editors.XMLEditor"
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor">
</editor>
</extension>
<extension
point="org.eclipse.ui.contexts">
<context
id="com.my.ui.definition.activatedEditorContext"
name="Editor Context"
parentId="org.eclipse.ui.textEditorScope">
</context>
</extension>
<extension point="org.eclipse.ui.commands">
<command id="com.my.handler" name="Hello"/>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler commandId="com.my.handler" class="com.my.handler.HelloHandler"/>
</extension>
<extension
point="org.eclipse.ui.bindings">
<key
commandId="com.my.handler"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
contextId="com.my.ui.definition.activatedEditorContext"
sequence="Ctrl+7">
</key>
</extension>
</plugin>
这是编辑器中的激活。
public XMLEditor()
colorManager = new ColorManager();
setSourceViewerConfiguration(new XMLConfiguration(colorManager));
setDocumentProvider(new XMLDocumentProvider());
IContextService contextService = (IContextService) PlatformUI
.getWorkbench().getService(IContextService.class);
contextService.activateContext("com.my.ui.definition.activatedEditorContext");
所以我认为在 plugin.xml 的配置中 antyhing 出了问题。
【问题讨论】:
【参考方案1】:在文本编辑器中,您不会为此使用上下文服务。相反,您覆盖 AbstractDecoratedTextEditor#initializeKeyBindingScopes
并设置键绑定范围:
/*
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#initializeKeyBindingScopes()
*/
@Override
protected void initializeKeyBindingScopes()
setKeyBindingScopes(new String[] "com.my.ui.definition.activatedEditorContext" );
最终使用IKeyBindingService
【讨论】:
以上是关于用于自定义编辑器的 Eclipse RCP 处理程序的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse RCP 资源管理(自定义Project)一 (转)
Eclipse RCP Content Assist 无法使用自动激活的字符