navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

コンテンツ拡張機能では、ナビゲーター・コンテンツ・サービスによって使用されるコンテンツとラベル・プロバイダーを提供します。 navigatorContent 拡張機能は、拡張機能で認識されいる要素のタイプに加えて、コンテンツ・プロバイダー、ラベル・プロバイダー、およびアクション・プロバイダーの、特定のクラスを定義します。

triggerPoints 式は、この拡張機能が子のため、またはラベルのためのどちらかで呼び出される原因となる要素を記述します。 possibleChildren 式は、拡張機能が親を提供することが可能である要素を記述します。クライアントは、エディター・サポートを持つリンクが適切に正しいノードに展開できるように、選択として設定される可能性のあるすべての要素を記述する必要があります。

<!ELEMENT extension ((navigatorContent? | actionProvider? | commonWizard? | commonFilter?))>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT navigatorContent ((enablement | (triggerPoints , possibleChildren)) , actionProvider* , commonSorter* , override? , dropAssistant* , commonWizard*)>

<!ATTLIST navigatorContent

id                CDATA #REQUIRED

name              CDATA #REQUIRED

priority          (lowest|lower|low|normal|high|higher|highest)

contentProvider   CDATA #REQUIRED

icon              CDATA #IMPLIED

activeByDefault   (true | false)

providesSaveables (true | false)

labelProvider     CDATA #REQUIRED>

ナビゲーター・コンテンツ拡張機能は、コンテンツ・プロバイダーとラベル・プロバイダーを定義して、要素が triggerPoints 式に一致したときはいつでも子を提供し、また要素が possibleChildren 式に一致したときはいつでも親を提供するために使用できるようにします。

オプションで、クライアントは、拡張機能がコントリビュートした要素、または triggerPoints 式と一致する要素が選択されたときに、メニュー・コントリビューションおよびアクション・バー・コントリビューションを提供できるアクション・プロバイダーを用意することもできます。クライアントはまた、拡張機能によってコントリビュートされた要素をソートするためにソーターをコントリビュートするという選択もできます。



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Enablement 式によって、クライアントが triggerPointspossibleChildren の両方に同じ式を指定することが可能になります。

actionProvider の場合は、クライアントは、いつ org.eclipse.ui.navigator.CommonActionProvider を呼び出す必要があるのかをフレームワークに指示する式を定義しなければなりません。 IActionBars へのコントリビューションのために、興味のあるオブジェクトが選択されたときにはいつでも、クライアントが呼び出されなければなりません。従って、クライアントは、いつその拡張機能を使用可能にするか決定する際に、任意に決めることになります。



<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

triggerPoints 式は、この拡張機能が子のために呼び出される原因となるツリー内のノードを定義します。



<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

possibleChildren 式は、この拡張機能のためにコントリビュートされる可能性のあるツリー内のノードを定義します。クライアントは、このコンテンツ拡張機能がいつ、式と一致する要素の親を提供できるかを記述する必要があります。



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

org.eclipse.ui.navigator.CommonActionProvider を実装するクラスの名前を提供します。アクション・プロバイダーは、コンテキスト・メニューと、ナビゲーターを保持するビューの IActionBars 内で定義された再ターゲット化が可能なアクションへ、コントリビュートする機会を持っています。クライアントはまた、IActionBars ビュー・メニューを介して直接そのビュー・メニューへコントリビュートすることもできます。

その actionProvider 用に viewerActionBinding がある場合は、トップレベル actionProvider は抽象ビューアーに対して可視 です。 navigatorContent 要素の下でネストされている actionProviders の場合は、可視性は navigatorContent 拡張機能 ID の ID でコントロールされます。子アクション・プロバイダーは、viewerContentBinding の一致によって、自動的に選出されます。可視性バインディングについて詳しくは、org.eclipse.ui.navigator.viewer を参照してください。

クライアントは、使用可能性とビューアー・バインディングをより良くコントロールするために、ルート拡張要素 (その他の navigatorContent と対等) の下に、actionProvider を提供できます (veiwerActionBinding を参照してください)。

ルート actionProviders に ID がない場合、ID は「org.eclipse.ui.navigator.actionProvider.X」にデフォルト設定されます。これらの actionProvider に、ビューアーのメニューまたはアクション・バーをコントリビュートする機会が与えられるように、viewerActionBinding を (org.eclipse.ui.navigator.viewer extension point の一部として) 定義する必要があります。これは、特定のビューアーとデフォルト ID (「org.eclipse.ui.navigator.actionProvider.*」) の間のバインディングを宣言します。詳細は、org.eclipse.ui.navigator.viewer のスキーマ文書のもとの viewerActionBinding 用の文書を参照してください。



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

拡張ポイントは、型によって定義されたメニューへコントリビュートするための機能を提供します。



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

特定の共通ビューアーと強く関連付けられたフィルターを定義します。共通フィルターは、コンテンツ拡張機能のように、org.eclipse.ui.navigator.viewer/viewerContentBinding を使用してビューアーへバインドされます。



<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

フィルターが特定のビューから非表示にするものを定義する、オプションの Eclipse コア式。

例えば、クライアントは名前に特定のパターン (「*.acme」など) を持つすべてのリソースを非表示にできます。フィルターが (デフォルトで、またはユーザーによってオンにされて) アクティブであるとき、「acme」で終わるすべてのリソースはユーザーのビューから非表示になります。

クライアントは、filterExpression または「class」属性のいずれかを使用できますが、両方はできません。



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

commonSorterorg.eclipse.jface.viewers.ViewerSorter のサブクラスを宣言します。これはツリー内の子のソートに使用されます。ネストされた parentExpression は、いつ commonSorter が使用されるかを記述します。要素が parentExpression と一致した場合、その子はこの commonSorter によってソートされます。



<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

parentExpression は、いつ適用できるを識別するために、commonSorter によって使用されます。 commonSorter 用の parentExpression が、与えられた要素と一致する場合は、 (コンテンツ・サービスのコンテンツ・プロバイダーによって戻された) その要素の子をソートするためにこの commonSorter が使用されます。



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

抑制された拡張機能の triggerPoints 式と宣言された拡張機能が、特定の要素で両方とも使用可能 であるとき、この拡張機能は呼び出されますが、その抑制された拡張機能は呼び出されません。 override 要素を指定するクライアントは、org.eclipse.ui.navigator.IPipelinedTreeContentProvider を実装するコンテンツ・プロバイダーも提供する必要があります。これにより、子、親、およびビューアーに対する直接のアップデートの要求をインターセプトするメソッドを提供します。



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

org.eclipse.ui.navigator.CommonDropAdapterAssistant のサブクラスを提供します。これは、ドロップ操作のプログラマチックな妥当性検査を提供し、追加の転送タイプを要求し、そのドロップ操作を取り扱うことができます。

dropAssistant は、ドラッグされた要素が、包含する navigatorContent 拡張機能の possibleChildren 式と一致し、しかも 操作のドロップ・ターゲットが dropAssistant 要素の possibleDropTargets 式によって記述されるときは常に、呼び出されます。

拡張機能は、相互に排他的な possibleDropTargets 式を伴う、複数のドロップ・アダプターを持つことがあります。与えられたドロップ・ターゲットと一致し、CommonDropAdapterAssistant.validateDrop(...) に対して「OK」状況を返すことが検出された最初のドロップ・アダプターに、ドロップを取り扱う機会が与えられます。



<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

特定の dropAssistant が取り扱うことができる、可能なドロップ・ターゲットを記述します。



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

汎用ルート要素です。 この要素を拡張ポイントの内部で使用すると、enablement 式を定義できます。 enablement 式の子は、AND 演算子を使用して結合されます。



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

この要素は、サブ要素式を評価した結果に対する NOT 演算を表します。



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

この要素は、サブ要素式すべてを評価した結果に対する AND 演算を表します。



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

この要素は、サブ要素式すべてを評価した結果に対する OR 演算を表します。



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

この要素は、フォーカスされているオブジェクトの instanceof 検査を実行するために使用されます。 オブジェクトの型が、属性値で指定されている型のサブタイプの場合、この式は EvaluationResult.TRUE を戻します。これ以外の場合は、EvaluationResult.FALSE を戻します。



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

この要素は、フォーカスされているオブジェクトのプロパティー状態を評価するために使用されます。 テスト可能なプロパティーのセットは、プロパティー・テスターの拡張ポイントを使用して拡張することができます。 実際のテストを実行するプロパティー・テスターがまだロードされていない場合、test 式は EvaluationResult.NOT_LOADED を戻します。



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

System.getProperty メソッドを呼び出してシステム・プロパティーをテストし、その結果を、 value 属性によって指定された値と比べてください。



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

この要素は、フォーカスされているオブジェクトの等号検査を実行するために使用されます。 オブジェクトが、属性値によって提供された値と等しい場合、この式は EvaluationResult.TRUE を戻します。 これ以外の場合は、EvaluationResult.FALSE を戻します。



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

この要素は、コレクション内の要素の数をテストするために使用されます。



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

この要素は、すべての子要素がインスペクション対象であるオブジェクトを、指定の変数で参照されているオブジェクトに変更します。 変数が解決できない場合、式は、評価時に ExpressionException をスローします。 with 式の子は、AND 演算子を使用して結合されます。



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

この要素は、すべての子要素がインスペクション対象であるオブジェクトを、指定の変数で参照されているオブジェクトに変更します。 変数が解決できない場合、式は、評価時に ExpressionException をスローします。 with 式の子は、AND 演算子を使用して結合されます。



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

この要素は、フォーカスされているオブジェクトを、属性型で指定されている型に適合させるために使用されます。 アダプターまたは参照される型がまだロードされていない場合、式は「ロードされていない」を戻します。 型名が全く存在しない場合、評価中に ExpressionException がスローされます。 adapt 式の子は、AND 演算子を使用して結合されます。



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

この要素は、java.util.Collection 型の変数を繰り返すために使用されます。 フォーカスされているオブジェクトの型が java.util.Collection ではない場合、式の評価時に ExpressionException がスローされます。




コンテンツの追加

以下の例では、リソース・コンテンツを提供するコンテンツ拡張機能を説明しています。 triggerPoints 式は、この拡張機能が当初、いつ呼び出されるかを判別します。 viewerContentBinding が、true に設定した「isRoot」属性を持つこの拡張機能と一致する場合は、ルート要素が triggerPoints 式と一致するかどうかに関わらず、この拡張機能が使用されます。

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<navigatorContent name=

"%resource.extension.name"

priority=

"low"

icon=

"icons/full/eview16/resource_persp.gif"

activeByDefault=

"true"

contentProvider=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionContentProvider"

labelProvider=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionLabelProvider"

sorter=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceSorter"

id=

"org.eclipse.ui.navigator.resourceContent"

>

<triggerPoints>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

</or>

</triggerPoints>

<possibleChildren>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

<instanceof value=

"org.eclipse.core.resources.IFile"

/>

</or>

</possibleChildren>

</navigatorContent>

</extension>

アクションの追加

クライアントは、オブジェクトまたはビューアーのコントリビューションを使用して (org.eclipse.ui.popupMenus を参照)、それらのビューのアクションを提供します。クライアントがこれらのアプローチのいずれかが許可するよりも度合いの高い柔軟性を要求する場合があります。そのため、共通ナビゲーター・フレームワークでは、アクション・プロバイダーの追加をサポートします。「アクション・プロバイダー」は、org.eclipse.ui.actions.ActionGroup をサブクラス化して、異なるイベント (それぞれ、選択と右クリック) を基にしてアクション・バーおよびメニューを充てんするための機会を与えられます。

クライアントは、1 つ以上のアクション・プロバイダーを特定のコンテンツ拡張機能と関連付けることも、アクション・プロバイダーを、どんな特定のコンテンツ拡張機能とも関連付けられていないトップレベルのコントリビューションとして宣言することもできます。トップレベルのアクション・プロバイダーは、org.eclipse.ui.navigator.viewer/viewerActionBinding 拡張ポイントを使用してビューアーの特定インスタンスと関連付ける必要があります。ネストされたアクション・プロバイダーは、その包含するコンテンツ拡張機能もビューアーにバインドされているかどうかを基にして、自動的にビューアーにバインドされます (org.eclipse.ui.navigator/viewerContentBinding を参照してください)。

以下の例では、両方のアプローチを示しています。「TestNestedActionProvider」 は、「org.eclipse.ui.tests.navigator.testContent」拡張機能が可視アクティブ であるときのみ、メニューと org.eclipse.ui.IActionBars へコントリビュートするために機会を与えられます。ユーザーが「 使用可能なカスタマイズ (Available customizations)」ダイアログからテスト拡張機能を非アクティブ化すると、ネストされたアクション・プロバイダーはコントリビュートする機会を与えられなくなります。

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<navigatorContent id=

"org.eclipse.ui.tests.navigator.testContent"

name=

"%test.navigator.extension"

contentProvider=

"org.eclipse.ui.tests.navigator.extension.TestContentProvider"

labelProvider=

"org.eclipse.ui.tests.navigator.extension.TestLabelProvider"

activeByDefault=

"true"

priority=

"normal"

>

<triggerPoints>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

</triggerPoints>

<actionProvider class=

"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"

id=

"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"

>

<enablement>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

</enablement>

</actionProvider>

</navigatorContent>

<actionProvider class=

"org.eclipse.ui.navigator.resources.internal.actions.NewActionProvider"

id=

"org.eclipse.ui.navigator.resources.NewActions"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</actionProvider>

</extension>

クライアントは、org.eclipse.jface.viewers.ViewerFilter のサブクラスを使用するか、または Eclipse コア式を介して、フィルターを定義できます。以下の例では、両方の手法が示されています。クライアントは 2 つのオプションを利用するだけです。エラーで両方が指定すされた拡張機能は、コア式フィルターのみが尊重されるという結果になります。名前フィールドと説明フィールドは翻訳可能で、実環境では外部化されたストリングになります。

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"

description=

"Hide TestItem objects that end in the number &quot;3&quot;"

id=

"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"

name=

"TestItems that end with &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Hides all instances of Test Item"

id=

"org.eclipse.ui.tests.navigator.filters.AllTestItems"

name=

"A TestItem Exp Filter (should be sorted alphab..)"

>

<filterExpression>

<instanceof value=

"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"

/>

</filterExpression>

</commonFilter>

その親をベースとして子のセットについて、共通ソーターが決定されます。ソーター・クラスは、org.eclipse.jface.viewers.ViewerSorter をサブクラス化する必要があります。


<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonSorter class=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionSorter"

id=

"org.eclipse.ui.navigator.resources.sorters.defaultSorter"

>

<parentExpression>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

<instanceof value=

"org.eclipse.core.resources.IFile"

/>

</or>

</parentExpression>

</commonSorter>

</extension>

以下の例では、「新規フォルダー」および「新規ファイル」のためにウィザード・ショートカット・アクションを追加する方法を示しています。これは org.eclipse.core.resources.IResource の特定サブクラス上で使用可能にされます。クライアントは、メニュー・オプションを使用可能にしなければならないときを記述するのに必要な org.eclipse.core.expressions のどの部分でも使用できます。以下で指定された wizardId は、org.eclipse.ui.xxxWizards 拡張ポイントのいずれかと対応している必要があります。

独自のビューアーまたはビュー・パーツをビルド中のクライアントの場合は、メニューを正しく取り込めるよう 必ず org.eclipse.ui.navigator.WizardActionGroup を使用してください。このフィーチャーの使用についてより詳しい文書は、そのクラスを参照してください。


<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonWizard type=

"new"

wizardId=

"org.eclipse.ui.wizards.new.folder"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</commonWizard>

<commonWizard type=

"new"

wizardId=

"org.eclipse.ui.wizards.new.file"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</commonWizard>

</extension>