org.eclipse.ui.decorators

您的外掛程式可以使用 Decorator 來註解出現在工作台檢視畫面中的資源和其他物件影像。當您的外掛程式為現有的資源類型新增功能時,Decorators 是非常有用的。許多標準工作台檢視畫面參與顯示裝飾。

例如,PDE 提供 Decorator,讓您分辨二進位專案和原始檔專案。

PDE Decorator 的套件瀏覽器檢視畫面

com.example.sourceProject  專案是顯示在導覽器中唯一的原始檔專案。請注意所有其他二進位專案在 Java 專案圖示的左上方顯示二進位 Decorator。此 Decorator 是 PDE 使用 org.eclipse.ui.decorators 延伸點所提供。

   <extension
     point="org.eclipse.ui.decorators">
      <decorator
            lightweight="true"
            quadrant="TOP_LEFT"
            adaptable="true"
            label="%decorator.label"
            icon="icons/full/ovr16/binary_co.gif"
            state="false"
            id="org.eclipse.pde.ui.binaryProjectDecorator">
         <description>
            %decorator.desc
         </description>
       <enablement> 
            ...
       </enablement> 
      </decorator>
</extension>

有數種不同的方法,可用來提供 Decorator 實作方式。 這個標記使用最簡單的方法,稱為宣告的小型 Decorator。 當定義了宣告的小型 Decorator 時,標記將含有 Decorator 的圖示、 放置位置及啟用條件的完整說明。 僅在使用圖示來裝飾標籤時,宣告的 Decorator 才有用。 外掛程式僅需要指定象限,在這裡 Decorator 應該覆蓋在一般圖示和覆蓋圖示之上。 如同圖片中所示,PDE 二進位圖示覆蓋在套件圖示的左上端象限。

如果除了圖示之外,您的外掛程式還需要操作標籤文字,或者, 如果圖示類型是以動態方法判定,您可以使用非宣告的小型 Decorator。 在這種情況中,實作 ILightweightLabelDecorator 的實作方式類別必須加以定義。指定的類別負責提供在執行時期要套用至標籤的字首、字尾和覆蓋影像。 背景緒中的工作台程式碼會處理將字首和字尾與標籤文字連結一起, 並執行覆蓋的機制。因此,任何由您的外掛程式在其 ILightweightLabelDecorator 實作方式中執行的工作必須能夠安全地使用 UI-執行緒。(如需詳細資料, 請參閱從非 UI 執行緒執行程式碼。)

下列標記顯示 CVS 用戶端如何使用這個技術來定義它的 Decorator:

   <extension
     point="org.eclipse.ui.decorators">
      <decorator
            objectClass="org.eclipse.core.resources.IResource"
            adaptable="true"
        label="%DecoratorStandard.name"
            state="false"
            lightweight= "true"
            quadrant = "BOTTOM_RIGHT"
            class="org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator"
        id="org.eclipse.team.cvs.ui.decorator">
         <description>
            %DecoratorStandard.desc
         </description>
      </decorator>
</extension>

Decorator 最終是由使用者透過工作台標籤裝飾喜好設定頁面來控制。 個別 Decorator 可以開啟和關閉。即使如此,設計您的 Decorator, 以便它們不會與現有的平台 SDK Decorator 發生重疊或衝突,是不錯的主意。 如果有多個外掛程式提供小型 Decorator 給相同的象限, 將無法判定是否能夠解析衝突。  

您的外掛程式也可能自行管理所有影像和標籤。 在這種情況中,lightweight 屬性應該設成 false,而 class 屬性應該命名一個實作 ILabelDecorator 的類別。 這個類別可讓您以自己的來附註裝飾原始標籤的影像和文字。 它將給與您更大的彈性,因為您不會受到字首、字尾和簡單象限覆蓋的限制。

其他 Decorator 屬性與特殊實作樣式無關。 labeldescription 屬性指定用來在喜好設定對話框中命名和說明 Decorator 的文字。 objectClass 命名應該套用 Decorator 的物件類別。 enablement 屬性可讓您說明在哪些條件下應該裝飾物件。 adaptable 旗標指出是否也應該裝飾適合 IResource 的物件。 state 旗標控制在預設的情況下是否看得見 Decorator。

如果您的 Decorator 包含難以計算或潛在複雜的資訊,當它開啟時, 您可能要提供自己的喜好設定,讓使用者做進一步細部調整 Decorator。這是 CVS 用戶端所使用的技術。

CVS Decorator 喜好設定頁面

 

Copyright IBM Corporation and others 2000, 2003.