裝飾元

org.eclipse.ui.decorators

2.0 版

這個延伸點是用來將裝飾元新增至向裝飾元管理程式訂閱的視圖中。如同 2.1 一般,有輕量型裝飾元的概念,用來處理裝飾元的影像管理。同時也可能宣告一個輕量型裝飾元,僅在啟用時才覆蓋一個不需要來自外掛程式的任何實作的圖示。

您可以分別使用 enablementvisibility 元素, 來定義動作的啟用狀態及/或可見性狀態。這兩個元素含有一個 boolean 表示式, 將被計算以決定啟用及/或可見性的狀態。

enablement 元素和 visibility 元素的語法是相同的。這兩者僅含有一個 boolean 表示式子元素。在最簡單的情況下, 這將是 objectClassobjectStatepluginStatesystemProperty 元素。在其他較複雜的情況下,andornot 元素可以結合以構成 boolean 表示式。andor 元素兩者必須含有 2 個子元素。not 元素必須僅含有 1 個子元素。

<!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)>

這個元素代表 Boolean AND 運算,以算出它的兩個子元素表示式的結果。



<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>

這個元素代表 Boolean OR 運算,以算出它的兩個子元素表示式的結果。



<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>

這個元素代表 Boolean 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>

class 屬性值必須是實作 org.eclipse.jface.viewers.ILabelDecorator(如果 lightweight 是 false)或 org.eclipse.jface.viewers.ILightweightLabelDecorator 之類別的完整名稱。這個類別的載入要儘可能晚,以避免在真正需要它之前載入整個外掛程式。 宣告的裝飾元不需要任何外掛程式啟動,因此應該儘可能使用它。非小型的裝飾元最終將作廢。

外掛程式可以使用這個延伸點, 將要套用的新裝飾元新增至使用裝飾元管理程式作為其標籤裝飾元的視圖中。如果要使用裝飾元管理程式,請使用 IViewPart.getDecoratorManager() 的結果, 作為 DecoratingLabelProvider 實例的裝飾元。目前正被「資源瀏覽器」使用。