navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Een contentextensie bevat een provider van content en een label voor gebruik door een navigatorcontentservice. De extensie navigatorContent verstrekt naast de elementtypen die voor de extensie zijn geregistreerd ook de specifieke klassen voor de contentprovider, de labelprovider en de actieprovider.

De expressie triggerPoints beschrijft de elementen die ervoor zorgen dat deze extensie wordt geactiveerd voor onderliggende elementen of labels. De expressie possibleChildren duidt de subelementen aan waarvoor de extensie een hoofdelement kan verstrekken. Clients moeten alle elementen opgeven die als selectie kunnen worden ingesteld om ervoor te zorgen dat de koppeling met editorondersteuning naar het juiste knooppunt kan worden uitgebreid.

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

De extensie navigatorContent definieert een content- en labelprovider voor het ophalen van subelementen wanneer een element aan de expressie triggerPoints voldoet en voor het ophalen van een hoofdelement wanneer een element aan de expressie possibleChildren voldoet.

Clients kunnen eventueel een actieprovider beschikbaar stellen voor het verstrekken van menu- en werkbalkaanleveringen bij het selecteren van een element dat door de extensie is toegevoegd of met de expressie triggerPoints overeenkomt. Clients kunnen bovendien een sorteerder verschaffen om de elementen die door de extensie zijn aangeleverd te sorteren.



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

De expressie enablement maakt het voor clients mogelijk dezelfde expressie op te geven voor zowel triggerPoints als possibleChildren.

Voor actionProvider moet een client een expressie definiëren die aan het framework doorgeeft wanneer org.eclipse.ui.navigator.CommonActionProvider moet worden aangeroepen. Vanwege de bijdragen aan IActionBars moeten clients worden aangeroepen wanneer een object wordt geselecteerd waarop de aanlevering van toepassing is. Wees daarom voorzichtig met vaststellen of de extensie moet worden ingeschakeld.



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

De expressie triggerPoints bevat de knooppunten van een boomstructuur waarmee deze extensie moet worden aangeroepen voor de subelementen.



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

De expressie possibleChildren bevat de knooppunten van een boomstructuur die door deze extensie moeten worden aangeleverd. Door clients moet worden aangegeven wanneer deze contentextensie een hoofdelement kan verstrekken voor elementen die met de expressie overeenkomen.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Hiermee wordt de naam verstrekt van een klasse die org.eclipse.ui.navigator.CommonActionProvider implementeert. De actieprovider kan aanleveringen verstrekken voor het voorgrondmenu en de herrichtbare acties die in IActionBars zijn gedefinieerd voor de view met de navigator. Bovendien kunnen clients rechtstreeks aanleveringen verstrekken via het viewmenu van IActionBars.

Het element actionProvider van het hoogste niveau is zichtbaar (visible) voor een abstracte viewer wanneer het kenmerk viewerActionBinding is ingesteld voor het element actionProvider. Als het element actionProvider in het element navigatorContent is genest, wordt de zichtbaarheid bepaald door het ID van de extensie navigatorContent. Onderliggende actieproviders worden automatisch opgehaald door afstemming van het kenmerk viewerContentBinding. Zie org.eclipse.ui.navigator.viewer voor meer informatie over zichtbaarheidskoppelingen.

Clients kunnen het element actionProvider in het hoofdelement extention plaatsen (bij andere navigatorContent) om enablement en viewerBinding beter te besturen (zie viewerActionBinding).

Als het element actionProviders niet van een ID is voorzien, wordt "org.eclipse.ui.navigator.actionProvider.X" als standaard-ID gehanteerd. Het element actionProvider kan alleen aanleveringen voor de menu's of werkbalken van een viewer verstrekken als viewerActionBinding is gedefinieerd (onderdeel van het extensiepunt org.eclipse.ui.navigator.viewer), waarbij een binding wordt gelegd tussen de specifieke viewer en het standaard-ID ("org.eclipse.ui.navigator.actionProvider.*"). Zie de documentatie voor viewerActionBinding in de schemadocumentatie van org.eclipse.ui.navigator.viewer voor meer informatie.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

Met het extensiepunt kunnen aanleveringen voor het menu worden verstrekt op basis van de waarde van type.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Dit is de definitie van een filter die aan een bepaalde gemeenschappelijke viewer kan worden gekoppeld. U kunt een gemeenschappelijke filters net zoals een contentextensie aan een viewer koppelen door middel van org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Een eventuele expressie van de Eclipse-kern die aangeeft welke gegevens in de view moeten worden verborgen.

In clients kan bijvoorbeeld worden ingesteld dat alle resources met een bepaald patroon in de naam (zoals "*.acme") worden verborgen. Als de filter actief is (standaard of door de gebruiker is ingeschakeld), worden alle resources waarvan de naam op "acme" eindigt in de view verborgen.

Het element filterExpression en het kenmerk "class" kunnen niet samen worden gebruikt.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Het element commonSorter declareert een subklasse van org.eclipse.jface.viewers.ViewerSorter, waarmee onderliggende elementen in een boomstructuur kunnen worden gesorteerd. Het geneste element parentExpression geeft aan of het element commonSorter moet worden gebruikt. Als een element met de waarde van parentExpression overeenkomt, worden de subelementen van het element door commonSorter gesorteerd.



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

Het element parentExpression wordt door commonSorter gebruikt om vast te stellen wanneer de sorteerder van toepassing is. Als het element parentExpression voor het element commonSorter met een bepaald element overeenkomt, worden de subelementen van het element (geretourneerd door de contentprovider van de contentservice) door de sorteerder gerangschikt.



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Als de expressie triggerPoints van de onderdrukte extensie en de gedeclareerde extensie beide op enabled zijn ingesteld voor een bepaald element, wordt alleen deze extensie aangeroepen. Als voor een client het element override is opgegeven, moet ook een contentprovider worden opgegeven die org.eclipse.ui.navigator.IPipelinedTreeContentProvider implementeert. Deze implementatie biedt methoden voor het opvangen van aanvragen van subelementen en rechtstreekse updates in de viewer.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Hiermee wordt een subklasse van org.eclipse.ui.navigator.CommonDropAdapterAssistant verstrekt, die programmatische validatie voor neerzettingsbewerkingen kan leveren, aanvullende overdrachtstypen kan opvragen en de neerzettingsbewerking kan afhandelen.

Wanneer versleepte elementen overeenkomen met de expressie possibleChildren van de extensie navigatorContent en het neerzettingsdoel van de bewerking door de expressie possibleDropTargets van het element dropAssistant wordt vermeld, wordt dropAssistant aangeroepen.

Een extensie kan meerdere neerzettingsadapters bevatten met possibleDropTargets-expressies die elkaar uitsluiten. De eerste adapter die met het gegeven neerzettingsdoel overeenkomt en CommonDropAdapterAssistant.validateDrop(...) goedkeurt, kan de neerzetting afhandelen.



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

Een beschrijving van de mogelijke neerzettingsdoeleinden die door dropAssistant kunnen worden afgehandeld.



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

Een generiek hoofdelement. U kunt het element in een extensiepunt gebruiken om de beschikbaarheidsexpressie ervan te definiëren. De criteria van een beschikbaarheidsvoorwaarde worden gecombineerd met de operator AND.



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

Dit element is een NOT-bewerking op het evaluatieresultaat van de bijbehorende subexpressie.



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

Dit element is een AND-bewerking op het evaluatieresultaat van alle bijbehorende subexpressies.



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

Dit element is een OR-bewerking op het evaluatieresultaat van alle bijbehorende subexpressies.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Dit element wordt gebruikt om een instanceof-controle uit te voeren op het object dat de focus heeft. De expressie retourneert EvaluationResult.TRUE als het objecttype een subtype is van het type dat voor de kenmerkwaarde is opgegeven. Anders retourneert de expressie EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Dit element wordt gebruikt om de eigenschapsstatus te evalueren van het object dat de focus heeft. De testbare eigenschappen kunnen worden uitgebreid met het extensiepunt van de eigenschapstester. De testexpressie retourneert EvaluationResult.NOT_LOADED als de eigenschapstester nog niet is geladen.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Vraagt een systeemeigenschap op met de methode System.getProperty en vergelijkt het resultaat daarvan met de waarde die voor het kenmerk value is opgegeven.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Dit element wordt gebruikt om een equals-controle uit te voeren op het object dat de focus heeft. De expressie retourneert EvaluationResult.TRUE als het object gelijk is aan de waarde die voor de kenmerkwaarde is opgegeven. Anders retourneert de expressie EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Dit element wordt gebruikt om het aantal elementen van een collectie op te vragen.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Dit element wijzigt het te inspecteren object voor alle subelementen in het object waarnaar door de opgegeven variabele wordt verwezen. Als de variabele niet kan worden omgezet, verwerpt de expressie de uitzondering ExpressionException tijdens de evaluatie. De onderliggende items van een with-expressie worden gecombineerd met de operator AND.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Dit element wijzigt het te inspecteren object voor alle subelementen in het object waarnaar door de opgegeven variabele wordt verwezen. Als de variabele niet kan worden omgezet, verwerpt de expressie de uitzondering ExpressionException tijdens de evaluatie. De onderliggende items van een with-expressie worden gecombineerd met de operator AND.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Dit element wordt gebruikt om het focusobject aan te passen aan het type dat voor het kenmerk type is opgegeven. De expressie retourneert 'not loaded' als de adapter of het type nog niet is geladen. Als de typenaam helemaal niet bestaat, wordt de uitzondering ExpressionException verworpen tijdens de evaluatie. De criteria van een adapt-expressie worden gecombineerd met de operator AND.



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

<!ATTLIST iterate

operator (or|and) >

Dit element wordt gebruikt om een variabele van het type java.util.Collection te doorlopen. Als het focusobject niet van het type java.util.Collection is, wordt de uitzondering ExpressionException verworpen tijdens de evaluatie.




Content toevoegen

In het volgende voorbeeld ziet u hoe een contentextensie resourcecontent levert. De expressie triggerPoints bepaalt wanneer deze extensie voor het eerst wordt aangeroepen. Als viewerContentBinding met deze extensie overeenkomt en het kenmerk "isRoot" op true is ingesteld, wordt de extensie gebruikt, ongeacht of het hoofdelement met de expressie triggerPoints overeenkomt.

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

Acties toevoegen

Clients kunnen object- of vieweraanleveringen (zie org.eclipse.ui.popupMenus) gebruiken om acties aan de view toe te voegen. Soms zijn dergelijke aanleveringen niet flexibel genoeg. U kunt dan een actieprovider van het navigatorframework toevoegen. "Actieproviders" hebben org.eclipse.ui.actions.ActionGroup als subklasse en kunnen de werkbalken en menu's op basis van events (selecteren en klikken met de rechtermuisknop) vullen.

Clients kunnen een of meer actieproviders aan een bepaalde contentextensie koppelen of de actieproviders declareren als aanleveringen van het hoogste niveau, die aan geen enkele contentextensie zijn gekoppeld. Actieproviders van het hoogste niveau moeten aan een bepaalde viewer-instance worden gekoppeld via het extensiepunt org.eclipse.ui.navigator.viewer/viewerActionBinding. Als de hoofdcontentextensie aan een viewer is gekoppeld, worden geneste actieproviders automatisch ook gekoppeld (zie org.eclipse.ui.navigator/viewerContentBinding).

In het volgende voorbeeld worden beide technieken geïllustreerd. De actieprovider "TestNestedActionProvider" kan alleen aanleveringen voor het menu en org.eclipse.ui.IActionBars verstrekken als de extensie "org.eclipse.ui.tests.navigator.testContent" op visible en active is ingesteld. Als de testextensie in het dialoogvenster "Beschikbare aanpassingen" wordt gedeactiveerd, kan de geneste actieprovider geen aanleveringen meer verstrekken.

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

Clients kunnen filters definiëren met behulp van subklassen van org.eclipse.jface.viewers.ViewerFilter of expressies van de Eclipse-kern. In het volgende voorbeeld worden beide technieken geïllustreerd. Clients kunnen slechts één van beide opties gebruiken. Als een extensie beide technieken bevat, treedt een fout op en wordt alleen de kernexpressiefilter gehanteerd. De naam en de beschrijving kunnen worden vertaald en kunnen worden toegepast als geëxternaliseerde tekenreeksen in bestaande omgevingen.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"TestItem-objecten verbergen die op het cijfer &quot;3&quot; eindigen"

id=

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

name=

"TestItems die op &quot;3&quot; eindigen"

activeByDefault=

"true"

/>

<commonFilter description=

"Alle instances van Test Item verbergen"

id=

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

name=

"Testitemexpressiefilter (alfabetisch sorteren)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

Aan de hand van het hoofdelement wordt de gemeenschappelijke sorteerder voor een reeks onderliggende elementen bepaald. De sorteerklasse moet een subklasse van org.eclipse.jface.viewers.ViewerSorter zijn.


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

In het volgende voorbeeld ziet u hoe u de snelacties "Nieuwe map" en "Nieuw bestand" kunt toevoegen, die zijn ingeschakeld in de specifieke subklassen van org.eclipse.core.resources.IResource. Clients kunnen willekeurige onderdelen van org.eclipse.core.expressions gebruiken om aan te geven wanneer de menuopties beschikbaar moeten zijn. Het hieronder opgegeven kenmerk wizardId moet met een van de extensiepunten van org.eclipse.ui.xxxWizards overeenkomen.

Als u op een client zelf een viewer of een viewonderdeel samenstelt, moet u ervoor zorgen dat u org.eclipse.ui.navigator.WizardActionGroup gebruikt om het menu juist te vullen. Meer informatie over deze functie vindt u in de documentatie van deze klasse.


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