Включение и/или область видимости действия определяются с помощью элементов enablement и visibility соответственно. В обоих этих элементах содержится вычисляемое булевское выражение.
Синтаксис элементов enablement и visibility одинаков. В оба эти элемента входит только один дочерний элемент - булевское выражение. В простейшем случае это будет элемент objectClass, objectState, pluginState или systemProperty. В более сложных - булевское выражение формируется с помощью элементов И, ИЛИ и НЕ. В элементах И и ИЛИ должно быть по два дочерних элемента. В элементе НЕ - только один.
<!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) >
<!ELEMENT description (#PCDATA)>
необязательный подэлемент, тело которого содержит текст краткого описания значка оформления. Это описание будет показано на странице параметров значков оформления, поэтому рекомендуется его заполнять. Значение по умолчанию - пустая строка.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Этот элемент служит для включения расширения.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Этот элемент определяет область видимости расширения.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Это - булевская операция AND над результатами вычисления двух операндов выражения.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Это - булевская операция OR над результатами вычисления двух операндов выражения.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Это - булевская операция NOT над результатами вычисления двух операндов выражения.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Этот элемент служит для вычисления класса или интерфейса каждого объекта в текущем выбранном элементе. Если все объекты в текущем выбранном элементе реализуют заданный класс или интерфейс, то возвращается значение true.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Этот элемент служит для вычисления состояния атрибутов каждого объекта в текущем выбранном элементе. Если состояние атрибутов для всех объектов в текущем выбранном элементе равно заданному, то возвращается значение true. Для вычисления выражений такого типа каждый объект должен реализовывать или применять интерфейс org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Этот элемент служит для вычисления состояния модуля. Состояние модуля может принимать значения: installed (соответствует "resolved" в OSGi) или activated (соответствует "active" в OSGi).
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Этот элемент служит для вычисления состояния системного свойства. Значение свойства берется из java.lang.System.
Полный значок оформления. Разработчик модуля должен реализовать обработку ресурсов изображений.
<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>
Простой значок оформления. Это действительный класс, но так как это ILightweightLabelDecorator, то для него требуется только задать текст и ImageDescriptor. Никакой обработки ресурсов не требуется.
<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>
Простой декларативный значок оформления. Он не является действительным классом, поэтому для него нужен значок и квадрант для этого значка.
<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>
Copyright (c) 2002, 2004 IBM Corporation and others.
Все права защищены.
Эта программа и сопутствующие материалы распространяются на условиях Eclipse Public License v1.0, поставляемой вместе с продуктом и доступной на Web-сайте
http://www.eclipse.org/legal/epl-v10.html