navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

En innholdsutvidelse besørger en innholds- og etikettleverandører som kan brukes av en navigator-innholdstjeneste. Utvidelsen navigatorContent definerer de spesifikke klassene for innholdsleverandøren, etikettleverandøren og handlingsleverandøren, i tillegg til elementtypene som utvidelser kjenner til.

triggerPoints-uttrykket beskriver elementene som forårsaker at denne utvidelsen blir startet for underordnede elementer eller for etiketter. Uttrykket possibleChildren beskriver elementene som det kan være mulig for utvidelsen å skaffe et overordnet element for. Klienter skal beskrive alle elementer som kan velges, for å sikre at linken med redigeringsstøtte kan utvides til den riktige noden.

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

En Navigator-innholdsutvidelse definerer en innholdsleverandør og etikettleverandør som kan brukes til å besørge underordnede elementer når et element samsvarer med triggerPoints-uttrykket, og til å besørge et overordnet element når et element samsvarer med possibleChildren-uttrykket.

Eventuelt kan klienter også besørge en handlingsleverandør som kan gi menybidrag og handlingslinjebidrag når det blir valgt et element som utvidelsen bidro med, eller som samsvarer med triggerPoints-uttrykket. Klienter kan også velge å bidra med en sorterer for å sortere elementer som er oppgitt av utvidelsen.



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

Aktiveringsuttrykket lar klienter angi det samme uttrykket for både triggerPoints og possibleChildren.

For actionProvider må klienter definere et uttrykk som angir til rammeverket når deres org.eclipse.ui.navigator.CommonActionProvider skal startes. På grunn av bidrag til IActionBars, må klienter startes når et objekt de er interessert i, blir valgt. Derfor bør klienter utvise diskresjon ved valg av når utvidelsen skal aktiveres.



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

Uttrykket triggerPoints definerer nodene i et tre som skal medføre at denne utvidelsen startes for underordnede objekter.



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

Uttrykket possibleChildren definerer nodene i et tre som kan bidras av denne utvidelsen. Klienter bør beskrive når denne innholdsutvidelsen kan utgjøre et overordnet element for elementer som samsvarer med uttrykket.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Angir navnet på en klasse som implementerer org.eclipse.ui.navigator.CommonActionProvider. Handlingsleverandøren har mulighet til å bidra til hurtigmenyen og de målskiftende handlingene som er definert i IActionBars for visningen som inneholder navigatoren. Klienter kan også bidra direkte til visningsmenyen via IActionBars-visningsmenyen.

En actionProvider på øverste nivå er synlig for et abstrakt visningsprogram hvis det finnes en viewerActionBinding for gjeldende actionProvider. For handlingsleverandører som er nestet under et navigatorContent-element, blir synligheten kontrollert av navigatorContent-utvidelses-IDen. Underordnede handlingsleverandører blir hentet automatisk av samsvarende viewerContentBinding. Du finner mer informasjon om synlighetsbindinger i org.eclipse.ui.navigator.viewer.

Klienter kan oppgi actionProvider under rotutvidelseselementet (likeverdig med annet navigatorContent) for å få bedre kontroll over aktivering og visningsprogrambinding (se veiwerActionBinding).

For roten actionProviders uten noen ID, blir IDen "org.eclipse.ui.navigator.actionProvider.X" som standard. For at slike actionProviders skal gis mulighet til å bidra med menyene eller handlingslinjene i et visningsprogram, må det defineres en viewerActionBinding (som del av utvidelsespunktet org.eclipse.ui.navigator.viewer) som deklarer en binding mellom det spesifikke visningsprogrammet og standard-IDen ("org.eclipse.ui.navigator.actionProvider.*"). Du finner flere opplysninger i dokumentasjonen for viewerActionBinding under skjemadokumentasjonen til org.eclipse.ui.navigator.viewer.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

Utvidelsespunktet gir mulighet til å bidra til menyen, definert etter type.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Definerer et filter som kan tilknyttes et bestemt felles visningsprogram. Fellesfiltre bindes til et visningsprogram som innholdsutvidelser ved å bruke org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Et valgfritt Eclipse-kjerneuttrykk som definerer hva filteret skal skjule fra en bestemt visning.

Klienter kan for eksempel velge å skjule alle ressurser som har et bestemt navnemønster (for eksempel "*.acme"). Når filteret er aktivt (slått på som standard eller av brukeren), blir alle ressurser som slutter på "acme", skjult fra brukeren visning.

Klienter kan bruke enten filterExpression eller attributtet "class", men ikke begge deler.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

En commonSorter deklarerer en subklasse av org.eclipse.jface.viewers.ViewerSorter, som brukes til å sortere underordnede enheter i treet. Den nestede parentExpression beskriver når commonSorter skal brukes. Hvis et element samsvarer med parentExpression, blir dets underordnede elementer sortert etter denne commonSorter.



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

En parentExpression brukes av commonSorter for å identifisere når den kan brukes. Hvis parentExpression for en commonSorter samsvarer med et gitt element, brukes den aktuelle commonSorter til å sortere de underordnede enhetene til dette elementet (som returnert av innholdstjenestens innholdsleverandør).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Når triggerPoints-uttrykket til den utelatte utvidelsen og den deklarerte utvidelsen begge er aktivert på et gitt element, blir utvidelsen aktivert, men den utelatte utvidelsen blir ikke aktivert. Klienter som spesifiserer et override-element må også skaffe til veie en innholdsleverandør som implementerer org.eclipse.ui.navigator.IPipelinedTreeContentProvider, som gir metoder for å avskjære forespørsler for underordnede elementer, overordnede elementer samt direkte oppdateringer til visningsprogrammet.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Gir en subklasse av org.eclipse.ui.navigator.CommonDropAdapterAssistant som kan besørge programmatisk validering foren slipp-operasjon, be om ytterligere overføringstyper, og håndtere slipp-operasjonen.

En dropAssistant blir aktivert når elementer som dras, samsvarer med possibleChildren-uttrykket til den innkapslende navigatorContent-utvidelsen, og slipp-målet til operasjonen er beskrevet av possibleDropTargets-uttrykket til dropAssistant-elementet.

En utvidelse kan ha flere slipp-adaptere med gjensidig utelukkende possibleDropTargets-uttrykk. Den første slipp-adapteren som blir funnet, som samsvarer med det gitte slippmålet og returnerer OK-status for CommonDropAdapterAssistant.validateDrop(...), gis mulighet til å håndtere slippet.



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

Beskriv mulig mål for slipp som en bestemt dropAssistant kan håndtere.



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

Et generisk rotelement. Elementet kan brukes i et utvidelsespunkt for å definere det tilhørende aktiveringsuttrykket. Underordnede til et aktiveringsuttrykk kombineres med operatoren AND.



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

Dette elementet representerer en NOT-operasjon for resultatet av evalueringen av underelementuttrykket.



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

Dette elementet representerer en AND-operasjon på resultatet av evalueringen av alle dets underelementuttrykk.



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

Dette elementet representerer en OR-operasjon på resultatet av evalueringen av alle tilhørende underelementuttrykk.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Dette elementet brukes til å utføre en instanceof-kontroll av objektet i fokus. Uttrykket returnerer EvaluationResult.TRUE hvis objektets type er en subtype for typen som er oppgitt med value-attributtet. Ellers returneres EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Dette elementet brukes til å evaluere egenskapstilstanden til objektet i fokus. Settet med testbare egenskaper kan utvides ved hjelp av utvidelsespunktet for egenskapstesting. Testuttrykket returnerer EvaluationResult.NOT_LOADED hvis egenskapstesteren som utfører den faktiske testingen, ikke er lastet inn ennå.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Tester en systemegenskap ved å sende kall til metoden System.getProperty, og sammenlikner resultatet med verdien som er oppgitt ved hjelp av value-attributtet.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Dette elementet brukes til å utføre en equals-kontroll av objektet i fokus. Uttrykket returnerer EvaluationResult.TRUE hvis objektet er lik verdien som er oppgitt av value-attributtet. Ellers returneres EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Dette elementet brukes til å teste antall elementer i en samling.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Dette elementet endrer objektet som skal inspiseres, for alle underordnede elementer til objektet det refereres til med den oppgitte variabelen. Hvis variabelen ikke kan behandles, vil uttrykket kaste et ExpressionException ved evaluering. Underordnede under et with-uttrykk kombineres ved hjelp av 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 elementet endrer objektet som skal inspiseres, for alle underordnede elementer til objektet det refereres til med den oppgitte variabelen. Hvis variabelen ikke kan behandles, vil uttrykket kaste et ExpressionException ved evaluering. Underordnede under et with-uttrykk kombineres ved hjelp av operatoren AND.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Dette elementet brukes til å tilpasse objektet i fokus til typen som er oppgitt av attributtet type. Uttrykket returnerer ikke innlastet hvis adapteren eller typen det refereres til, ennå ikke er lastet inn. Det kaster et ExpressionException under evaluering hvis typenavnet ikke finnes i det hele tatt. Underordnede til et adapt-uttrykk kombineres ved hjelp av operatoren AND.



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

<!ATTLIST iterate

operator (or|and) >

Dette elementet brukes til å gjenta en variabel som er av typen java.util.Collection. Hvis objektet i fokus ikke er av typen java.util.Collection, kastes et ExpressionException ved evaluering av uttrykket.




Legge til innhold

Det følgende eksempelet beskriver en innholdsutvidelse som besørger ressursinnhold. triggerPoints-uttrykket bestemmer når denne utvidelsen aktiveres for første gang. Hvis en viewerContentBinding samsvarer denne utvidelsen med "isRoot"-attributtet satt til true, brukes utvidelsen uansett om rotelementet samsvarer med triggerPoints-uttrykket eller ikke.

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

Legge til handlinger

Klienter kan bruke objekt- eller visningsbidrag (se org.eclipse.ui.popupMenus) for å besørge handlinger for deres utsnitt. Noen ganger krever klienter en større grad av fleksibilitet enn noen av disse tilnærmingsmåtene tillater, og derfor støtter Felles navigator-rammeverket tillegg av handlingsleverandører. "Handlingsleverandører" har subklassen org.eclipse.ui.actions.ActionGroup og har muligheter til å fylle handlingslinjene og menyene basert på ulike hendelser (henholdsvis merking og høyreklikking).

Klienter kan enten knytte en eller flere handlingsleverandører til en bestemt innholdsutvidelse, eller deklarere handlingsleverandørene som bidrag på øverste nivå, ikke tilknyttet noen bestemt innholdsutvidelse. Handlingsleverandører på øverste nivå må være tilknyttet en bestemt forekomst av visningsprogram som bruker utvidelsespunktet org.eclipse.ui.navigator.viewer/viewerActionBinding. Nestede handlingsleverandører blir automatisk bundet til et visningsprogram, basert på om deres inneholdende innholdsutvidelse også er bundet til visningsprogrammet (se org.eclipse.ui.navigator/viewerContentBinding).

Det følgende eksempelet demonstrerer begge fremgangsmåtene. "TestNestedActionProvider" vil bli gitt en mulighet til å bidra til menyen og org.eclipse.ui.IActionBars bare når utvidelsen "org.eclipse.ui.tests.navigator.testContent" er synlig og aktiv. Hvis brukeren deaktiverer testutvidelsen fra dialogboksen "Tilgjengelige tilpasninger", har ikke den nestede handlingsleverandøren lenger mulighet til å bidra.

<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 med subklasser av org.eclipse.jface.viewers.ViewerFilter eller via Eclipse-kjerneuttrykk. Det følgende eksempelet demonstrerer begge disse teknikkene. Klienter kan bare bruke ett av de to alternativene. Hvis utvidelser ved en feil angir begge, blir det bare tatt hensyn til kjerneuttrykksfilteret. Navne- og beskrivelsesfeltene kan oversettes, og skal være eksternaliserte strenger i virkelige miljøer.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"Skjul TestItem-objekter som slutter på tallet &quot;3&quot;"

id=

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

name=

"TestItems som slutter på &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Skjuler alle forekomster av testelement"

id=

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

name=

"Et TestItem Exp-filter (bør sorteres alfab..)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

En felles sorterer velges for et sett underordnede elementer, basert på deres overordnede element. Sortererklassen må opprette subklasse med 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>

Det følgende eksempelet viser hvordan du tilføyer veivisersnarveier for "Ny mappe" og "Ny fil", som aktiveres på de spesifikke subklassene til org.eclipse.core.resources.IResource. Klienter kan bruke de delene av org.eclipse.core.expressions som er nødvendige for å beskrive når menyalternativene skal være tilgjengelige. wizardId som er spesifisert under, må tilsvare et av org.eclipse.ui.xxxWizards-utvidelsespunktene.

Klienter som bygger sine egne visningsprogrammer eller visningsdeler, må bruke org.eclipse.ui.navigator.WizardActionGroup for å fylle menyene på riktig måte. Se denne klassen for å få mer dokumentasjon om bruken av denne funksjonen.


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