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.
<!ELEMENT extension (decorator*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT decorator (description?, enablement?)>
<!ATTLIST decorator
id CDATA #REQUIRED
label CDATA #REQUIRED
class CDATA #IMPLIED
objectClass CDATA #IMPLIED
adaptable (true | false)
state (true | false)
lightweight (true|false)
icon CDATA #IMPLIED
location (TOP_LEFT|TOP_RIGHT|BOTTOM_LEFT|BOTTOM_RIGHT|UNDERLAY) >
IDecoratorManager#update()
.<!ELEMENT descrição (#PCDATA)>
Um subelemento opcional cujo corpo deve conter um texto, fornecendo uma breve descrição do decorador. Isto será mostrado na página de preferências Decoradores, portanto, é recomendável que ela seja incluída. O valor padrão é uma Cadeia vazia.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento é utilizado para definir a ativação da extensão.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento é utilizado para definir a visibilidade da extensão.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana AND como resultado da avaliação de duas expressões de subelementos.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana OR como resultado da avaliação de duas expressões de subelementos.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Esse elemento representa uma operação booleana NOT no resultado da avaliação de expressões de subelementos.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Esse elemento é utilizado para avaliar a classe ou 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.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Esse elemento é utilizado para avaliar o estado de 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.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Esse elemento é utilizado para avaliar o estado de um plug-in. O estado do plug-in pode ser um dos seguintes: installed (equivalente ao conceito OSGi de "resolved") ou activated (equivalente ao conceito OSGi de "active").
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Esse elemento é utilizado para avaliar o estado de alguma propriedade do sistema. O valor da propriedade é recuperado de java.lang.System.
Um decorador completo. O desenvolvedor de plug-ins deve identificar seu próprio suporte de imagens.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.decorator"
label=
"XYZ Decorator"
state=
"true"
class=
"com.xyz.DecoratorContributor"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Um decorador lightweight. Há uma classe concreta, mas como ele está em um ILightweightLabelDecorator, só precisa fornecer texto e um ImageDescriptor, não precisando de nenhuma identificação de recurso.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.decorator"
label=
"XYZ Lightweight Decorator"
state=
"false"
class=
"com.xyz.LightweightDecoratorContributor"
lightweight=
"true"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Um decorador lightweight informativo. Não há nenhuma classe concreta, portanto, ele fornece um ícone e um quadrante para aplicar esse ícone.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.declarative.decorator"
label=
"XYZ Lightweight Declarative Decorator"
state=
"false"
lightweight=
"true"
icon=
"icons/full/declarative.gif"
location=
"TOP_LEFT"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Direitos Autorais (c) 2002, 2004 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais fornecidos com ele são
disponibilizados sob os termos da Licença Pública do Eclipse v1.0 que acompanha
esta distribuição e está disponível em
http://www.eclipse.org/legal/epl-v10.html