org.eclipse.ui.editorActions

Acabamos de ver como os editores podem contribuir com suas próprias ações nos menus e na barra de ferramentas do workbench, quando estão ativos.  O ponto de extensãoorg.eclipse.ui.editorActions permite a um plug-in incluir os menus e a barra de ferramentas do workbench quando outro editor do 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="&amp;Readme Editor Extension"
                    toolbarPath="ReadmeEditor" 
                    icon="icons/basic/obj16/editor.gif" 
                    tooltip="Run Readme Editor Extension"
                    class="org.eclipse.ui.examples.readmetool.EditorActionDelegate" 
                    /> 
        </editorContribution>
</extension>

Semelhante a uma ação de exibição, a extensão deve especificar o targetID do editor para o qual ele está contribuindo com ações.  A própria ação é bastante semelhante a uma ação de exibição (id, label e toolbarPath), a exceção é que a classe especificada deve implementarIEditorActionDelegate.  

Observe que o caminho da barra de menus não é especificado nessa marcação.  Isso significa que a ação aparecerá na barra de ferramentas 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 do menu e da barra de ferramentas).

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.  Isso é muito semelhante à delegação da ação de exibição que vimos anteriormente.

public void run(IAction action) {
    MessageDialog.openInformation(editor.getSite().getShell(),
        "Readme Editor", 
        "Editor Action executed");
}