Acabámos de ver como os editores podem contribuir com as suas próprias acções para os menus e a barra de ferramentas da área de trabalho quando se tornam activos. O ponto de extensão org.eclipse.ui.editorActions permite a um plug-in adicionar aos menus e barra de ferramentas da área de trabalho quando o editor de outro plug-in se tornar activo.
No exemplo do readme, o plug-in utiliza o ponto de extensão editorActions para contribuir com mais acções para o menu, que por seu turno é contributo do editor do readme. a definição no nosso ficheiro plugin.xml já deve ser conhecida agora.
<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>
Semelhante à acção vista, a extensão deve especificar o targetID do editor para o qual contribui com acções. A própria acção é muito semelhante a uma acção vista (id, etiqueta, ícone, toolbarPath... ), exceptuando o facto de uma classe especificada ter de implementar IEditorActionDelegate e o definitionId pode ser especificado para ligar esta acção a um Comando especificado pela extensão org.eclipse.ui.commands, que é importante para as associações de teclas. Consulte Comandos.
Repare que não foi especificado nesta marcação nenhum caminho de barra de menus. Por conseguinte, a acção irá aparecer na barra de ferramentas da área de trabalho quando o editor estiver activo, mas não na barra de menus da área de trabalho. (Consulte Caminhos de menus e barras de ferramentas para ver uma abordagem dos caminhos de barras de ferramentas e menus.
É certo que, quando o editor está activo, vemos a acção do nosso editor na barra de ferramentas junto às acções que foram contributos do próprio editor.
A ferramenta readme faculta um EditorActionDelegate para implementar a acção. Esta classe é muito semelhante ao delegado de acções de vista que vimos antes.
public void run(IAction action) { MessageDialog.openInformation(editor.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("Editor_Action_executed")); }