navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

En indholdsudvidelse indeholder et indhold og en etiketudbyder, der kan anvendes af et navigatorindholdsserviceprogram. Udvidelsen navigatorContent definerer de specifikke klasser for indholdsudbyderen, etiketudbyderen og funktionsudbyderen ud over de elementtyper, udvidelsen kender til.

Udtrykket triggerPoints beskriver de elementer, der forårsager, at udvidelsen indsættes for underordnede eller for etiketter. Udtrykket possibleChildren beskriver de elementer, som udtrykket kan være i stand til at stille en overordnet til rådighed for. Klienter bør beskrive alle elementer, der kan angives som valget, for at sikre, at linket med editorunderstøttelse kan udvides korrekt til den rigtige node.

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

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

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

En udvidelse til navigator-indhold definerer en indholdsudbyder og en etiketudbyder, der kan anvendes til at stille underordnede til rådighed, hver gang et element matcher triggerPoints-udtrykket, og som også stiller en overordnet til rådighed, hver gang et element matcher possibleChildren-udtrykket.

Klienter kan også stille en funktionsudbyder til rådighed, der kan stille nye bidrag og funktionslinjebidrag til rådighed, når et element vælges, som udvidelsen har leveret, eller som matcher triggerPoints-udtrykket. Klienter kan også vælge at levere en sortering for at sortere elementer, der er leveret af udvidelsen.



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

Aktiveringsudtrykket tillader klienter at angive det samme udtryk for både triggerPoints og possibleChildren.

I tilfælde af actionProvider skal klienter definere et udtryk, der indikerer strukturen, når deres org.eclipse.ui.navigator.CommonActionProvider skal startes. Pga. bidrag til IActionBars skal klienter startes, hver gang der vælges et objekt, de er interesseret i. Derfor skal klienter udvise diskretion ved beslutningen om, hvornår deres udvidelse skal aktiveres.



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

Udvidelsen triggerPoints definerer noderne i en træstruktur, der skal bevirke, at denne udvidelse startes for underordnede.



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

Udvidelsen possibleChildren definerer noderne i en træstruktur, der skal leveres af denne udvidelse. Klienter skal beskrive, hvornår denne indholdsudvidelse kan stille en overordnet til rådighed for elementer, der matcher udtrykket.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Leverer navnet på en klasse, der implementerer org.eclipse.ui.navigator.CommonActionProvider. Funktionsudbyderen har en mulighed for at levere til kontekstmenuen og de målsøgende funktioner, der er defineret i IActionBars for den oversigt, der holder Navigator. Klienter kan også bidrage direkte til menuen Vis via menuen IActionBars.

En actionProvider på øverste niveau er synlig for en abstrakt fremviser, hvis der er en viewerActionBinding for den pågældendeactionProvider. For actionProviders, der er indlejret under et navigatorContent-element, styres synligheden af id'en for navigatorContent-udvidelses-id'en. Underordnede funktionsudbydere vil automatisk blive samlet op ved matchende viewerContentBinding'er. Der er flere oplysninger om synlighedsbindinger under org.eclipse.ui.navigator.viewer.

Klienter kan stille actionProvider'ere til rådighed under rodudvidelseselementet (sidestiller med andet navigatorContent) for bedre at styre deres aktivering og fremviserbinding - se veiwerActionBinding).

For actionProviders i roden uden id anvendes id'en til "org.eclipse.ui.navigator.actionProvider.X" som standard. For at give disse actionProvider'ere mulighed for at levere menuer eller funktionslinjer til en fremviser skal der defineres en viewerActionBinding som en de af udvidelsespunktet org.eclipse.ui.navigator.viewer, som erklærer en binding mellem den specifikke fremviser og standard-id'en("org.eclipse.ui.navigator.actionProvider.*"). Se dokumentationen for viewerActionBinding under skemadokumentationen org.eclipse.ui.navigator.viewer for at få flere oplysninger.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

Udvidelsespunktet stiller muligheden for at bidrage til menuen, der er defineret efter type, til rådighed.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Angiver et filter, der kan knyttes til en bestemt Common Viewer. Generelle filtre er bundet til en fremviser ligesom indholdsudvidelser ved at bruge org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Et valgfrit Eclipse-kerneudtryk, der definerer, hvad filtret skal skjule i en bestemt oversigt.

F.eks. kan klienter beslutte at skjule alle ressourcer, der har et særligt mønster i deres navn, f.eks. "*.acme". Når filtret er aktivt (aktiveret som standard eller af brugeren), skjules alle de ressourcer, der slutter på "acme" på brugerens oversigt.

Klienter kan anvende filterExpression eller attributten "class", men ikke begge.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

En commonSorter erklærer en underklasse af org.eclipse.jface.viewers.ViewerSorter, der anvendes til at sortere underordnede i træstrukturen. Den indlejrede parentExpression beskriver, hvornår commonSorter skal anvendes. Hvis et element matcher parentExpression, vil dets underordnede blive sorteret af denne commonSorter.



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

En parentExpression anvendes af commonSorter til at angive, når den er anvendelig. Hvis parentExpression for en commonSorter matcher et givet element, anvendes denne commonSorter til at sortere underordnede for dette element (som returneret af indholdsudbyderen af indholdsserviceprogrammet).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Når udtrykket triggerPoints for den undertrykte udvidelse og den erklærede udvidelse begge er aktiveret på et givet element, vil denne udvidelse blive starte, mens den undertrykte udvidelse ikke bliver det. Klienter, der angiver elementet override, skal også stille en indholdsudbyder til rådighed, der implementerer org.eclipse.ui.navigator.IPipelinedTreeContentProvider, der stiller metoder til rådighed, der opsnapper anmodninger for underordnede, overordnede og direkte opdateringer til fremvisninger.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Stiller en underklasse af org.eclipse.ui.navigator.CommonDropAdapterAssistant til rådighed, der kan stille programvalidering for en dropfunktion til rådighed, anmode om yderligere overførselstyper og behandle dropfunktionen.

En dropAssistant startes, hver gang elementer, der trækkes, matcher udtrykket possibleChildren af det indeholdende udtryk navigatorContent, og dropmålet for funktionen er beskrevet af udtrykket possibleDropTargets for elementet dropAssistant.

En udvidelse kan have flere dropadaptere med gensidige possibleDropTargets-udtryk. Den første dropadapter, der matcher det givne dropmål og returnerer en OK-status for CommonDropAdapterAssistant.validateDrop(...), får mulighed for at behandle droppet.



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

Beskriver de mulige dropmål, som en bestemt dropAssistant kan behandle.



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

Et generisk rodelement. Elementet kan anvendes i et udvidelsespunkt for at angive dets aktiveringsudtryk. Underordnede til et aktiveringsudtryk kombineres vha. en operator.



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

Dette element repræsenterer en NOT-funktion på resultatet af evalueringen af dets underelementudtryk.



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

Dette element repræsenterer en AND-funktion på resultatet af evalueringen af dets underelementudtryk.



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

Dette element repræsenterer en OR-funktion på resultatet af evalueringen af alle dets underelementudtryk.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Dette element anvendes til at udføre et instanceof-check af objektet i fokus. Udtrykket returnerer EvaluationResult.TRUE, hvis objektets type er en undertype der er angivet af attributværdien. Ellers returneres EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Dette element anvendes til at evaluere egenskabstilstanden for objektet i fokus. Sættet af egenskaber, der kan testes, kan udvides vha. udvidelsespunktet egenskabstester. Testudtrykket returnerer EvaluationResult.NOT_LOADED, hvis egenskabstesteren, der udfører den aktuelle test, ikke er indlæst endnu.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Tester en systemegenskab ved at kalde metoden System.getProperty, og sammenligner resultatet med den værdi, der er angivet via værdiattributten.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Dette element anvendes til at udføre en sammenligningskontrol af objektet i fokus. Udtrykket returnerer EvaluationResult.TRUE, hvis objektet er lig med værdiudbyderen for attributværdien. Eller returneres EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Dette element anvendes til at teste antallet af elementer i en samling.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Dette element ændrer det objekt, der skal undersøges for alle underordnede elementer, til et objekt, der henvises til fra en given variabel. Hvis variablen ikke kan opløses, vil udtrykket sende en ExpressionException, når den evalueres. En underordnet med et with-udtryk kombineres ved at bruge operatoren and.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Dette element ændrer det objekt, der skal undersøges for alle underordnede elementer, til et objekt, der henvises til fra en given variabel. Hvis variablen ikke kan opløses, vil udtrykket sende en ExpressionException, når den evalueres. En underordnet med et with-udtryk kombineres ved at bruge operatoren and.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Dette element anvendes til at tilpasse objekter i fokus til den type, der er angivet af attributtypen. Udtrykket returnerer ikke indlæst, hvis adapteren eller den type, der henvises til, ikke er indlæst endnu. Det sender en ExpressionException under evalueringen, hvis typenavnet slet ikke findes. Underordnede til et tilpasset udtryk kombineres vha. operatoren AND.



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

<!ATTLIST iterate

operator (or|and) >

Dette element anvendes til gentagelser for en variabel, der har typen java.util.Collection. Hvis objektet i fokus ikke er af typen java.util.Collection, sendes der en ExpressionException, når udtrykket evalueres.




Tilføj indhold

Det følgende eksempel beskriver en indholdsudvidelse, der stillet ressourceindhold til rådighed. Udtrykket triggerPoints bestemmer, hvornår denne udvidelse startes initialt. Hvis viewerContentBinding matcher denne udvidelse med attributten "isRoot" angivet som true, anvendes denne udvidelse, uanset om rodelementet matcher udtrykket 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>

Tilføj funktioner

Klienter kan anvende objekt- eller fremviserbidrag (se org.eclipse.ui.popupMenus) for at stille funktioner til rådighed for deres oversigt. Undertiden kræver klienter en større grad af fleksibilitet end nogen af disse løsninger tillader, og derfor understøtter Common Navigator-strukturen tilføjelse af funktionsudbydere. Funktionsudbyderunderklassen org.eclipse.ui.actions.ActionGroup har mulighed for at udfylde funktionslinjer og menuer baseret på forskellige aktiviteter (henholdsvis valg og højreklik).

Klienter kan enten tilknytte en eller flere funktionsudbydere til en bestemt indholdsudvidelse eller erklære funktionsudbydere på bidrag på øverste niveau, der ikke er knyttet til en bestemt indholdsudvidelse. Funktionsudbydere på øverste niveau skal knyttes til en bestemt forekomst af fremviseren vha. udvidelsespunktet org.eclipse.ui.navigator.viewer/viewerActionBinding. Indlejrede funktionsudbydere bindes automatisk til en fremviser ud fra, om den indholdsudvidelse, de indeholder, også er bundet til fremviseren (se org.eclipse.ui.navigator/viewerContentBinding).

Det følgende eksempel viser begge løsninger. "TestNestedActionProvider" får kun mulighed for at levere til menuen og org.eclipse.ui.IActionBars, når udvidelsen "org.eclipse.ui.tests.navigator.testContent" er synlig og aktiv. Hvis brugeren deaktiverer testudvidelsen fra dialogboksen "Tilgængelige tilpasninger", får den indlejrede funktionsudbyder ikke længere mulighed for at bidrage.

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

Klienter kan definere filtre ved at bruge underklassen af org.eclipse.jface.viewers.ViewerFilter eller vha. Eclipse-kerneudtryk. Følgende eksempel viser begge teknikker. Klienter kan kun anvende én af mulighederne. Udvidelser, der angiver begge ved en fejl, resulterer i, at kun kerneudtryksfiltret respekteres. Felterne med navn og beskrivelse er konvertérbare og bør eksternalisere strenge i ægte miljøer.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"Skjul TestItem-objekter, der slutter med tallet &quot;3&quot;"

id=

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

name=

"TestItems, der slutter med &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Skjul alle forekomster af testelementer"

id=

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

name=

"Et TestItem Exp-filter (skal sorteres alfabetisk...)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

En almindelig sortering bestemmes for et sæt underordnede ud fra deres overordnede. Sorteringsklassen skal være en underklasse af 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>

Følgende eksempel viser, hvordan guidegenvejsfunktioner tilføjes til "Ny folder" og "Ny fil", der aktiveres på de specifikke underklasser af org.eclipse.core.resources.IResource. Klienter kan anvende de dele af org.eclipse.core.expressions, der er nødvendige for at beskrive, hvornår menupunkterne skal være tilgængelige. Den wizardId, der er angivet nedenfor, skal svare til en af org.eclipse.ui.xxxWizards-udvidelsespunkterne.

Klienter, der bygger deres egne fremvisere eller fremvisningsdele, skal sørge for at anvende org.eclipse.ui.navigator.WizardActionGroup for at udfylde menuen korrekt. Se under denne klasse for at få flere oplysninger om brugen af funktionen.


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