Dostępność i widoczność akcji można odpowiednio zdefiniować przy użyciu elementów enablement oraz visibility. Te dwa elementy zawierają wyrażenie boolowskie, od którego wartości zależy dostępność i/lub widoczność.
Składnia dla elementów enablement oraz visibility jest taka sama. Oba zawierają tylko jeden podelement w formie wyrażenia boolowskiego. W najprostszym przypadku będzie to element objectClass, objectState, pluginState lub systemProperty. W bardziej złożonych przypadkach można łączyć elementy and, or oraz not w celu utworzenia wyrażenia boolowskiego. Element and i element or muszą zawierać dwa podelementy. Element not musi zawierać tylko jeden podelement.
<!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) >
lightweight
ma wartość false
, lub interfejs org.eclipse.jface.viewers.ILightweightLabelDecorator, jeśli parametr lightweight
ma wartość true
. Wartość domyślna to false. Jeśli element class nie występuje, przyjmuje się wartość lightweight
. W przypadku braku klasy dekoracji przyjmuje się, że jest ona typu deklaratywnego. Dekoracje deklaratywne, których element enablement
jest oparty na właściwościach sesji, właściwościach trwałych lub wartościach opisu projektu (takich jak natury), wymagają jawnej aktualizacji w przypadku zmiany tych wartości za pomocą metody IDecoratorManager#update()
.objectClass
, powinny korzystać z danego obiektu wnoszonego. W przypadku dekoracji typu innego niż lightweight
opcja ta działa wyłącznie, jeśli atrybut objectClass
jest dostosowywany do interfejsu IResource
. W przypadku dekoracji typu lightweight
możliwość dostosowania do jakiegokolwiek atrybutu objectClass
zależy od tego, czy została zdefiniowania za pośrednictwem menedżera adapterów (patrz opis klasy org.eclipse.runtime.IAdapterManager
).
Wartość domyślna to false.<!ELEMENT description (#PCDATA)>
Opcjonalny podelement, którego treść powinien stanowić tekst z krótkim opisem dekoracji. Będzie on wyświetlany na stronie preferencji Dekoracje, a więc zalecane jest jego uwzględnienie. Wartość domyślna to pusty łańcuch.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ten element służy do definiowania włączenia rozszerzenia.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ten element służy do definiowania widoczności rozszerzenia.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ten element reprezentuje boolowską operację AND wykonywaną na wyniku wartościowania wyrażeń stanowiących jego dwa podelementy.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ten element reprezentuje boolowską operację OR wykonywaną na wyniku wartościowania wyrażeń stanowiących jego dwa podelementy.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ten element reprezentuje boolowską operację NOT wykonywaną na wyniku wartościowania wyrażeń stanowiących jego podelementy.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Ten element służy do wartościowania klasy lub interfejsu każdego obiektu w bieżącym wyborze. Jeśli każdy obiekt w wyborze implementuje określoną klasę lub interfejs, wyrażenie otrzyma wartość true.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Ten element służy do wartościowania stanu atrybutu każdego obiektu w bieżącym wyborze. Jeśli każdy obiekt w wyborze ma określony stan atrybutu, wyrażenie otrzyma wartość true. Aby można było przeprowadzić wartościowanie tego typu wyrażenia, każdy obiekt w wyborze musi implementować interfejs org.eclipse.ui.IActionFilter lub dostosować się do niego.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Ten element służy do wartościowania stanu wtyczki. Stan wtyczki może mieć jedną z następujących wartości: installed (odpowiednik "resolved" w środowisku OSGi) lub activated (odpowiednik "active" w środowisku OSGi).
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Ten element służy do wartościowania stanu wybranej właściwości systemowej. Wartość właściwości jest pobierana z obiektu typu java.lang.System.
Dekoracja pełna. Programista wtyczki musi opracować własną procedurę obsługi obrazów.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.decorator"
label=
"Dekoracja XYZ"
state=
"true"
class=
"com.xyz.DecoratorContributor"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Dekoracja prosta. Występuje klasa konkretna, ale ponieważ jest to klasa ILightweightLabelDecorator, konieczne jest dostarczenie tylko tekstu oraz elementu ImageDescriptor, a zatem nie jest wymagana obsługa zasobów.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.decorator"
label=
"Dekoracja prosta XYZ"
state=
"false"
class=
"com.xyz.LightweightDecoratorContributor"
lightweight=
"true"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Deklaratywna dekoracja prosta. Nie występuje klasa konkretna, a więc dostarczana jest ikona oraz kwadrant do zastosowania tej ikony.
<extension point=
"org.eclipse.ui.decorators"
>
<decorator id=
"com.xyz.lightweight.declarative.decorator"
label=
"Prosta dekoracja deklaratywna XYZ"
state=
"false"
lightweight=
"true"
icon=
"icons/full/declarative.gif"
location=
"TOP_LEFT"
>
<enablement>
<objectClass name=
"org.eclipse.core.resources.IResource"
/>
</enablement>
</decorator>
</extension>
Copyright (c) 2002, 2004 IBM Corporation i inne podmioty.
Wszelkie prawa zastrzeżone. Program ten oraz towarzyszące mu materiały są udostępniane na warunkach
licencji EPL (Eclipse Public License), wersja 1.0, dołączonej do nich i
dostępnej pod adresem http://www.eclipse.org/legal/epl-v10.html.