Descrição: esse ponto de extensão é utilizado para incluir ações no menu e na barra de ferramentas para exibições registradas por outros plug-ins. Cada exibição tem um menu pulldown local normalmente ativado ao clicar na área superior direita. Outros plug-ins podem contribuir com sub-menus e ações para esse menu. Os plug-ins também podem contribuir com ações para a barra de ferramentas de exibição. Aos proprietários de exibições é dada a primeira chance de ocupar essas áreas. Inclusões opcionais por outros plug-ins são anexadas.
Marcação da Configuração:
<!ELEMENT viewContribution (menu | action)*>
<!ATTLIST viewContribution
id
CDATA #REQUIRED
targetID CDATA #REQUIRED
>
<!ELEMENT menu (separator)+>id - o identificador exclusivo que pode ser utilizado para referir-se a essa contribuição. targetID - o identificador exclusivo da exibição (conforme especificado no registro) dentro do qual a contribuição é feita.
<!ELEMENT action (selection)* (enablement)?>name - nome do separador que pode mais tarde ser referido como o último token no caminho da ação. Assim sendo, os separadores servem como grupos nomeados cujas ações podem ser incluídas.
Na versão 2.0 de Eclipse, um elemento de ativação pode ser utilizado para definir a ativação para a ação. Para obter mais informações sobre o uso do elemento de ativação, consulte actionExpressions.html.Os critérios de ativação para a extensão de uma ação são inicialmente definidos por enablesFor, seleção e ativação. Entretanto, uma vez que a ação delegada tenha sido instanciada, ela pode controlar o estado de ativação da ação diretamente dentro do seu método selectionChanged.
Os rótulos de ação e de menu podem conter caracteres especiais que codificam mnemônicos os quais são especificados utilizando o caracter e comercial ('&') em frente de um caractere de mnemônico no texto traduzido. Uma vez que o e comercial não é permitido em cadeias XML, utilize a entidade de caractere &.
Se duas ou mais ações forem contribuídas a um menu ou barra de ferramentas por uma única extensão, as ações aparecerão na ordem inversa de como elas serão listadas no arquivo plugin.xml. Esse procedimento não é reconhecidamente intuitivo. Entretanto, ele foi descoberto após a API da Plataforma Eclipse estava pendente. Alterar o procedimento agora iria interromper cada plug-in que lida com o procedimento existente.
Exemplos:
A seguir um exemplo do ponto de extensão de uma exibição (note que os subelementos e os atributos de modo são utilizados):
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="com.xyz.xyzViewC1"
targetID="org.eclipse.ui.views.ResourceNavigator">
<menu id="com.xyz.xyzMenu"
label="XYZ Menu"
path="additions">
<separator name="group1"/>
</menu>
<action id="com.xyz.runXYZ"
label="&Run XYZ Tool"
menubarPath="com.xyz.xyzMenu/group1"
toolbarPath="Normal/XYZ"
icon="icons/runXYZ.gif"
tooltip="Run XYZ Tool"
helpContextId="com.xyz.run_action_context"
class="com.xyz.actions.RunXYZ"
enablesFor="1"/>
<selection class="org.eclipse.core.resources.IFile" name="*.java">
</action>
</viewContribution>
</extensão>
No exemplo acima, a ação especificada somente ativará uma seleção simples (atributo enablesFor). Além disso, cada objeto nessa seleção deve implementar a interface especificada. (IFile) e deve ser um arquivo Java. Elementos múltiplos seleção podem ser especificados, significando 'um de'.
Informações de API: o valor do atributo de classe deve ser um nome completo de uma classe Java que implementa org.eclipse.ui.IViewActionDelegate. Essa interface é carregada o mais tarde possível para evitar o carregamento de todo o plug-in antes que isso seja necessário. Ela estende org.eclipse.ui.IActionDelegate e inclui um método adicional que permite ao delegado inicializar com a ocorrência de exibição de sua contribuição interna.
Implementação Fornecida: cada visualização normalmente vem com um número de itens padrão no menu pulldown e na barra de ferramentas local. Inclusões a partir dos plug-ins serão anexadas ao complemento padrão. É útil para publicar os identificadores de ação para uma exibição dentro de uma interface pública. Por exemplo, as ações e os principais grupos para a janela do workbench são definidos em org.eclipse.ui.IWorkbenchActionConstants.