Descrição: Esse ponto de extensão é utilizado para adicionar ações ao menu de opções e à barra de ferramentas para exibições registradas por outros plug-ins. Cada exibição tem um menu de opções local normalmente ativado ao clicar no botão triangular no canto superior direito. 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.
A ativação e/ou a visibilidade de uma ação podem ser definidas utilizando os elementos enablement e visibility, respectivamente. Esses dois elementos contêm uma expressão booleana que é avaliada para determinar a ativação e/ou visibilidade.
A sintaxe é a mesma para os elementos enablement e visibility. Ambos contêm apenas uma sub-elemento de expressão booleana. No caso mais simples, isso será um elemento objectClass, objectState, pluginState ou systemProperty. No caso mais complexo, os elementos and, or e not podem ser combinados para formar uma expressão booleana. Os elementos and e or devem conter 2 sub-elementos. O elemento not deve conter apenas 1 sub-elemento.
Marcação da Configuração:
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT viewContribution (menu* , action*)>
Esse elemento é utilizado para definir um grupo de ações de exibição e/ou menus.
<!ATTLIST viewContribution<!ELEMENT action (selection* | enablement?)>
Esse elemento define uma ação que o usuário pode chamar na UI.
<!ATTLIST actionpush | - como um item de menu ou de ferramenta normal. | |
radio | - como um item de menu ou de ferramenta no estilo de opções. As ações com o estilo de opções no mesmo grupo de menu ou barra de ferramentas se comportam como um conjunto de opções. O valor inicial é especificado pelo atributo state. | |
toggle | - como um item de menu ou de ferramenta de comutação no estilo de marcação. O valor inicial é especificado pelo atributo state. |
! | - 0 itens selecionados | |
? | - 0 ou 1 item selecionado | |
+ | - 1 ou mais itens selecionados | |
vários, 2+ | - 2 ou mais itens selecionados | |
n | - um número preciso de itens selecionado. Por exemplo: enablesFor=" 4" ativa a ação apenas quando 4 itens forem selecionados | |
* | - qualquer número de itens selecionados |
<!ELEMENT menu (separator+ , groupMarker*)>
Esse elemento é utilizado para definir um novo menu.
<!ATTLIST menu<!ELEMENT separator EMPTY>
Esse elemento é utilizado para criar um separador de menus no novo menu.
<!ATTLIST separator<!ELEMENT groupMarker EMPTY>
Esse elemento é utilizado para criar um grupo nomeado no novo menu. Não há representação visual no novo menu, diferentemente do elemento separator.
<!ATTLIST groupMarker<!ELEMENT selection EMPTY>
Esse elemento é utilizado para ajudar a determinar a ativação da ação com base na seleção atual. É ignorado se o elemento enablement for especificado.
<!ATTLIST selection<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento é utilizado para definir a ativação da ação.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento é utilizado para definir a visibilidade da ação.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana AND sobre o resultado da avaliação de suas expressões de dois sub-elementos.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana OR sobre o resultado da avaliação de suas expressões de dois sub-elementos.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana NOT sobre o resultado da avaliação de suas expressões de sub-elementos.
<!ELEMENT objectClass EMPTY>
Esse elemento é utilizado para avaliar a classe ou a interface de cada objeto na seleção atual. Se cada objeto na seleção implementar a classe ou interface especificada, a expressão será avaliada como verdadeira.
<!ATTLIST objectClass<!ELEMENT objectState EMPTY>
Esse elemento é utilizado para avaliar o estado do atributo de cada objeto na seleção atual. Se cada objeto na seleção possuir o estado de atributo especificado, a expressão será avaliada como verdadeira. Para avaliar esse tipo de expressão, cada objeto na seleção deve implementar ou se adaptar à interface org.eclipse.ui.IActionFilter.
<!ATTLIST objectState<!ELEMENT pluginState EMPTY>
Esse elemento é utilizado para avaliar o estado de um plug-in. O estado do plug-in pode ser um dos seguintes: installed ou activated.
<!ATTLIST pluginState<!ELEMENT systemProperty EMPTY>
Esse elemento é utilizado para avaliar o estado de alguma propriedade do sistema. O valor da propriedade é recuperado de java.lang.System.
<!ATTLIST systemProperty
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="Menu XYZ" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ" label="&Executar Ferramenta XYZ" menubarPath="com.xyz.xyzMenu/group1" toolbarPath="Normal/additions" style="toggle" state="true" icon="icons/runXYZ.gif" tooltip="Executar Ferramenta XYZ" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.RunXYZ"> <selection class="org.eclipse.core.resources.IFile" name="*.java"/> </action> </viewContribution> </extension>
No exemplo acima, a ação especificada somente ativará uma seleção simples (atributo enablesFor).Além disso, o objeto na seleção deve ser um recurso de arquivo Java.
A seguir é apresentado outro exemplo de uma extensão de ação de exibição:
<extension point="org.eclipse.ui.viewActions"> <viewContribution id="com.xyz.xyzViewC1" targetID="org.eclipse.ui.views.navigator.ResourceNavigator"> <menu id="com.xyz.xyzMenu" label="Menu XYZ" path="additions"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ2" label="&Executar Ferramenta XYZ2" menubarPath="com.xyz.xyzMenu/group1" style="push" icon="icons/runXYZ2.gif" tooltip="Executar Ferramenta XYZ2" helpContextId="com.xyz.run_action_context2" class="com.xyz.actions.RunXYZ2"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <not> <objectState name="extension" value="java"/> </not> </and> </enablement> </action> </editorContribution> </extension>
No exemplo acima, a ação especificada aparecerá como um item de menu. A ação será ativada se a seleção não contiver recursos de arquivo Java.
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 classe é carregada o mais tarde possível para evitar o carregamento de todo o plug-in antes que isso seja realmente necessário.
A interface org.eclipse.ui.IViewActionDelegate estende org.eclipse.ui.IActionDelegate e inclui um método adicional que permite ao delegado inicializar com uma instância de exibição com a qual está contribuindo.
Esse ponto de extensão pode ser utilizado para contribuir com ações nos menus criados anteriormente pela exibição de destino. A omissão do atributo path do menu resultará na inclusão do novo menu ou ação no final do menu de opções.
Os critérios de ativação para uma extensão de ação é inicialmente definida por enablesFor e também por selection ou enablement. 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 das ações e de menus podem conter caracteres especiais que codificam mnemônicos utilizando as seguintes regras:
Os elementos selection e enablement são mutuamente exclusivos. O elemento enablement pode substituir o elemento selection utilizando os sub-elementos objectClass e objectState. Por exemplo, o seguinte:
<selection class="org.eclipse.core.resources.IFile" name="*.java"> </selection>pode ser expresso utilizando:
<enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <objectState name="extension" value="java"/> </and> </enablement>
Implementação Fornecida: cada visualização normalmente vem com um número de itens padrão no menu de opções e na barra de ferramentas local. As adições de outros plug-ins serão anexadas ao complemento padrão.
Copyright (c) 2000, 2003 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais que o acompanham são disponibilizados sob os termos da Licença Pública Comum v1.0 que acompanha essa distribuição, e está disponível em http://www.eclipse.org/legal/cpl-v10.html