デコレーター

org.eclipse.ui.decorators

リリース 2.0

この拡張ポイントは、デコレーター・マネージャーにサブスクライブするビューに、デコレーターを追加するために使用します。 リリース 2.1 では、デコレーターのイメージ管理を処理するライト・ウェイト・デコレーターという概念があります。 また、プラグインからの実装を必要としない、使用可能になったときに単純にアイコンをオーバーレイするライト・ウェイト・デコレーターを宣言することも可能です。

アクションの使用可能性と可視性は、エレメント enablementvisibility をそれぞれ使用することによって定義できます。 これらの 2 つのエレメントにはブール式が含まれ、この式が評価されて使用可能性と可視性を決定します。

enablement エレメントと visibility エレメントは同じ構文です。 どちらにも、1 つのブール式サブエレメントだけが含まれています。 最も単純なケースでは、これは 1 つの objectClassobjectStatepluginState、または systemProperty エレメントになります。 もっと複雑なケースになると、andor、および not のエレメントで結合して、1 つのブール式を構成している場合があります。 and および or エレメントの両方に、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)>

このエレメントは、2 つのサブエレメント式を評価した結果に対するブール AND 演算を表します。



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

このエレメントは、2 つのサブエレメント式を評価した結果に対するブール OR 演算を表します。



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

このエレメントは、サブエレメント式を評価した結果に対するブール NOT 演算を表します。



<!ELEMENT objectClass EMPTY>

<!ATTLIST objectClass

name CDATA #REQUIRED>

このエレメントは、現在の選択内の各オブジェクトのクラスまたはインターフェースを評価するために使用されます。 選択内の各オブジェクトが指定されたクラスまたはインターフェースを実装している場合、式は真と評価されます。



<!ELEMENT objectState EMPTY>

<!ATTLIST objectState

name  CDATA #REQUIRED

value CDATA #REQUIRED>

このエレメントは、現在の選択内の各オブジェクトの属性の状態を評価するために使用されます。 選択内の各オブジェクトが指定された属性状態である場合、式は真と評価されます。 このタイプの式を評価するには、 選択内の各オブジェクトが org.eclipse.ui.IActionFilter インターフェースを実装するか、またはそれに適合している必要があります。



<!ELEMENT pluginState EMPTY>

<!ATTLIST pluginState

id    CDATA #REQUIRED

value (installed|activated) "installed">

このエレメントは、プラグインの状態を評価するために使用されます。 プラグインの状態は、installed (OSGi の「resolved」の概念と等価) または activated (OSGi の「active」の概念と等価) のいずれかです。



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

宣言型ライト・ウェイト・デコレーターです。 具体的なクラスがないため、アイコンと、そのアイコンが適用される 4 等分画面を指定します。

 

<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 のインスタンスのデコレーターとして使用します。 これは、現在リソース・ナビゲーターによって使用されています。