Acabamos de ver como os editores podem contribuir com suas próprias ações para os menus e barra de ferramentas do workbench, quando tornam-se ativos. O ponto de extensão org.eclipse.ui.editorActions permite que um plug-in inclua nos menus do workbench e a barra de ferramentas quando o editor de outro plug-in torna-se ativo.
No exemplo do leia-me, o plug-in utiliza o ponto de extensão editorActions para contribuir com ações adicionais para o menu de contribuição do editor do leia-me. A definição em nosso plugin.xml deve parecer bastante familiar no momento.
<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" /> </editorContribution> </extension>
Semelhante a uma ação de visualização, a extensão deve especificar o targetID do editor para o qual está contribuindo com ações. A própria ação é bastante semelhante a uma ação de visualização (id, label, icon, toolbarPath, ...), exceto que a classe especificada deve implementar IEditorActionDelegate.
Observe que o caminho de uma barra de menus não é especificado nessa marcação. Portanto, a ação aparecerá na barra de ferramentas do workbench quando o editor estiver ativo, mas não na barra de menus do workbench. (Consulte Caminhos de menu e da barra de ferramentas para obter uma discussão sobre caminhos de barra de ferramentas e de menu.)
Sem dúvida, quando o editor está ativo, vemos a ação do nosso editor na barra de ferramentas, ao lado da ações que foram contribuições do próprio editor.
A ferramenta Leia-me fornece EditorActionDelegate para implementar a ação. Essa classe é muito semelhante à delegação da ação de visualização que vimos anteriormente.
public void run(IAction action) { MessageDialog.openInformation(editor.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("Editor_Action_executed")); }