Мы уже видели, как редакторы могут добавлять собственные действия к меню рабочей среды и панели инструментов, когда они становятся активными. Точка расширения org.eclipse.ui.editorActions позволяет модулям добавлять компоненты к меню рабочей среды и панели инструментов, когда активируются редакторы других модулей.
В примере readme модуль использует точку расширения editorActions для добавления дополнительных действий к меню, добавленным редактором readme. Определение в plugin.xml должно выглядеть уже знакомым.
<extension point = "org.eclipse.ui.editorActions"> <editorContribution id="org.eclipse.ui.examples.readmetool.ec1" targetID="org.eclipse.ui.examples.readmetool.ReadmeEditor"> <action id="org.eclipse.ui.examples.readmetool.ea1" label="%Editors.Action.label" toolbarPath="ReadmeEditor" icon="icons/obj16/editor.png" tooltip="%Editors.Action.tooltip" class="org.eclipse.ui.examples.readmetool.EditorActionDelegate" definitionId="org.eclipse.ui.examples.readmetool.ea1" /> </editorContribution> </extension>
Также как и для действия Просмотр, расширение должно указывать targetID редактора, в который вносятся дополнительные действия. Само по себе действие очень похоже на действие Просмотр (ИД, метка, значок, toolbarPath, ...). Разница в том, что указанный класс должен реализовать метод IEditorActionDelegate, а также можно указать definitionId для связывания действия с командой, заданной в расширении org.eclipse.ui.commands. Это расширение необходимо для создания привязок клавиш. Обратитесь к разделу Команды.
Обратите внимание, что путь строки меню не указан в этом коде. Таким образом, действие будет отображаться в панели инструментов рабочей среды, когда редактор активен, но не в меню рабочей среды. (Подробные сведения о путях панели инструментов и меню содержатся в разделе Пути меню и панели инструментов).
Конечно, при активизации редактора мы видим действия редактора в панели инструментов рядом с действиями, добавленными самим редактором.
Утилита readme предоставляет EditorActionDelegate для реализации действия. Этот класс очень похож на делегата действия пункта Просмотр, рассмотренного ранее.
public void run(IAction action) { MessageDialog.openInformation(editor.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("Editor_Action_executed")); }