in my custom editor I want that the handler is only activated when it it is executed within the editor.
<?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"
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" />
</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>
Here is the activation in the editor.
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");
}
So I think antyhing went wrong in the configuration of the plugin.xml.
CodePudding user response:
In a text editor you don't use the context service for this. Instead you override AbstractDecoratedTextEditor#initializeKeyBindingScopes
and set the key binding scope:
/*
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#initializeKeyBindingScopes()
*/
@Override
protected void initializeKeyBindingScopes() {
setKeyBindingScopes(new String[] { "com.my.ui.definition.activatedEditorContext" });
}
Which ends up using IKeyBindingService