Konfigurasjon av felles visningsprogram

org.eclipse.ui.navigator.viewer

3.2

Visningsprogram-elementet definerer konfigurasjonen for et felles visningsprogram. Utvidelsen kan inneholde en tilpasset hurtigmeny-ID, overstyre om visningsprogrammet gir linker med redigeringstøtte, inneholder en filterdialogboks og/eller dialogboksen "Tilgjengelige tilpasninger". I tillegg gir nestede konfigurasjonselementer full kontroll over hurtigmenyens struktur og virkemåte.

viewerContentBinding-bindinger definerer innholdsutvidelser (via navigatorContent-utvidelsespunktet) for visningsprogrammer (definert via org.eclipse.ui.views-utvidelsespunktet). En innholdsutvidelse som er bundet til et visningsprogram, er beskrevet som synlig. En innholdstjeneste (org.eclipse.ui.navigator.INavigatorContentService) returnerer ikke utvidelser som ikke er synlige for tjenestens visningsprogram-ID.

<!ELEMENT extension (viewer* , viewerContentBinding* , viewerActionBinding* , dragAssistant)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT viewer (popupMenu? , options?)>

<!ATTLIST viewer

viewerId    CDATA #REQUIRED

popupMenuId CDATA #IMPLIED>

Gir basiskonfigurasjon for å definere egenskapene til et visningsprogram. Klienter må også definere en org.eclipse.ui.views-utvidelse for å opprette visningsdelen.



<!ELEMENT viewerContentBinding (includes? , excludes?)>

<!ATTLIST viewerContentBinding

viewerId CDATA #REQUIRED>

Klienter må definere ett eller flere viwerContentBinding-elementer for å beskrive hvilke innholdsutvidelser og vanlige filtre som er synlige. En innholdsutvidelse eller et vanlig filter er synlig hvis IDen til innholdsutvidelsen eller fellesfilteret samsvarer med en includes-setning under en viewerContentBinding og ikke utelates av en excludes-setning. Hvis en innholdsutvidelse eller et felles filter ikke er synlig for et visningsprogram, blir utvidelsen aldri spurt om innhold av en innholdstjeneste for dette visningsprogrammet, og blir aldri presentert for brukeren i dialogboksen Tilgjengelige filtre.

Klienter kan definere et includes-element for å velge hvilke utvidelser som skal være synlige for visningsprogrammet, og et excludes-element for utvidelser som ikke skal være synlige. Klienter kan ytterligere definere utvidelsene som det eksplisitt må spørres etter for rotelementer (via ITreeContentProvider.getElements()) med "isRoot"-attributtet. Hvis ett eller flere contentExtension-elementer har "isRoot" satt til sant (true) i includes-setningen, blir det bare spurt etter rotelementer i disse utvidelsene. "isRoot"-attributtet har ingen effekt på utelatelser.

Det kan være definert flere viewerContentBindings for et visningsprogram, og includes/excludes-setningene blir aggregert for å produsere den endelige virkemåten.



<!ELEMENT viewerActionBinding (includes? , excludes?)>

<!ATTLIST viewerActionBinding

viewerId CDATA #REQUIRED>

Klienter må definere hvilke handlingsleverandører som er synlige for deres visningsprogram. Klienter kan definere et includes-element for å velge hvilke utvidelser som skal være synlige for visningsprogrammet, og et excludes-element for utvidelser som ikke skal være synlige.

Det kan være definert flere viewerActionBindings for et visningsprogram, og deres includes/excludes-setninger blir aggregert for å produsere den endelige virkemåten.

For actionProvider-definisjoner som ikke er nestet under en navigatorContent-definisjon, kan klienter oppgi en tilpasset ID. Hvis klienter ikke oppgir en ID, brukes standard-IDen "org.eclipse.ui.navigator.actionProvider.X". For klienter som ønsker å plukke opp actionProvider uten noen spesifikk ID, må klienter definere en viewerActionBinding for standard-IDen. I eksempeldelen kan du se hvordan dette er gjort.



<!ELEMENT includes ((contentExtension+) | (actionExtension+))>

Definer et sett med mønstre som skal inkluderes ved søking etter innholdsutvidelser for visningsprogrammet som samsvarer med "viewerId"-attributtet. Når includes- og excludes-setningene krysser hverandre, gis includes-setningen prioritet.



<!ELEMENT excludes ((contentExtension+) | (actionExtension+))>

Definer et sett med mønstre som skal ekskluderes ved søking etter innholdsutvidelser for visningsprogrammet som samsvarer med "viewerId"-attributtet. Når includes- og excludes-setningene krysser hverandre, gis includes-setningen prioritet.



<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

pattern CDATA #REQUIRED

isRoot  (true | false) >

Angir IDen (eller motsvarende mønster) til en innholdsutvidelse som det kan utføres spørringer i av ITreeContentProvider.getElements() eller ITreeContentProvider.getChildren() for roten til visningsprogrammet eller et felles filter som skal være tilgjengelig for brukeren i dialogboksen "Tilgjengelige filtre".

Klienter kan spesifisere "isRoot" for å velge spesifikke rotutvidelser for å overstyre utvidelsene som ellers ville ha blitt aktivert for visningsprogrammets inndataelement (basert på samsvarende triggerPoints-uttrykk for visningsprogrammets inndataelement).

Du finner mer informasjon i dokumentasjonen til viewerContentBinding.



<!ELEMENT actionExtension EMPTY>

<!ATTLIST actionExtension

pattern CDATA #REQUIRED>

Angir at handlingsutvidelsen skal gis muligheter til å bidra til hurtigmenyen og handlingslinjene.

Du finner mer informasjon i dokumentasjonen til viewerActionBinding.



<!ELEMENT popupMenu (insertionPoint*)>

<!ATTLIST popupMenu

id                          CDATA #IMPLIED

allowsPlatformContributions (true | false) >

Et popupMenu-element kan bare defineres hvis "popupMenuId"-attributtet til viewer-elementet ikke er oppgitt.

popupMenu-elementet tillater ytterligere tilpasning av hurtigmenyen som er tilknyttet visningsprogrammet. For at alternativene skal bli brukt riktig, må en forekomst av visningsprogrammet delegere til enorg.eclipse.ui.navigator.NavigatorActionService, som virker som en normal org.eclipse.ui.ActionGroup. I dokumentasjonen til denne API-klassen finner du mer informasjon om hvordan du bruker denne funksjonaliteten. For klienter som bruker en forekomst av org.eclipse.ui.navigator.CommonNavigator, er det ikke nødvendig å gjøre noe ekstra arbeid.

En popupMenu deklarerer ett eller flere insertionPoints som brukes av bidragsytere til å organisere bidragene i en mer meningsfylt, mer brukervennlig og konsistent liste.
Hvis klienter bare oppgir "popupMenuId"-attributtet til viewer-elementet, blir settet med insertionPoints som brukes av hurtigmenyen, en liste med denne standardrekkefølgen:

"group.new"             separator="true"
"group.goto"            
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true" 
"group.properties"      separator="true"


Klienter som ønsker å referere til disse verdiene programmatisk, kan bruke de tilsvarende konstantene i org.eclipse.ui.navigator.ICommonMenuConstants.

Klienter som ønsker å tilpasse menyene, oppfordres til å starte med denne listen og legge til eller fjerne innsettingspunkter etter behov. Klienter oppmuntres også til å følge mønsteret med å begynne hvert gruppenavn med "group.".

Hvis popupMenu-elementet er oppgitt, og ikke inneholder noen insertionPoint-underordnede elementer, vil ikke hurtigmenyen ha noen publiserte innsettingspunkter. Programmatiske klienter er selvsagt ikke forhindret fra å legge til sine egne innsettingspunktet etter behov. Klienter som definerer visningsprogrammer oppfordres til å publisere sine innsettingspunkter av hensyn til dokumentasjon og klarhet for nedstrømsutvidelser til visningsprogrammer/navigatorer, eller for å eksplisitt dokumenterer hvilke innsettingspunkter som betraktes som API, og hvilke som betraktes som interne.



<!ELEMENT insertionPoint EMPTY>

<!ATTLIST insertionPoint

name      CDATA #REQUIRED

separator (true | false) >

Definerer et innsettingspunkt for hurtigmenyen. Inkluderer navnet på punktet som klienter skal referere til, og hvorvidt innsettingspunktet skal gjengis som skilletegn eller gruppemerke.



<!ELEMENT options (property+)>

Gir alternativer for hvordan visningsprogrammet presenteres for brukeren. Se org.eclipse.ui.navigator.INavigatorViewerDescriptor for informasjon om de tilgjengelige egenskapene.



<!ELEMENT property EMPTY>

<!ATTLIST property

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Oppgi et navn=verdipar. Verdien blir oppgitt uforandret til visningsprogrammet (slik at tomme strenger blir spredt som tomme strenger). Under org.eclipse.ui.navigator.INavigatorViewerDescriptor finner du informasjon om tilgjengelige egenskaper med beskrivelser.



<!ELEMENT dragAssistant EMPTY>

<!ATTLIST dragAssistant

class    CDATA #REQUIRED

viewerId CDATA #REQUIRED>

Med en dra-og-slipp-assistent blir det enkelt å besørge ekstra overføringstyper og -logikk for angivelse av dra-dataene. Dette elementet er ikke obligatorisk, fordi den grunnleggende org.eclipse.ui.navigator.CommonViewer besørger en org.eclipse.ui.jface.util.LocalSelectionTransfer-type.

Klienter bør bare definere denne utvidelsen i enkle plugin-moduler med enkle avhengighetsoversikter. Dra-assistentene må være allerede være lastet når visningsprogrammet blir opprettet, dette vil tvinge innlasting av påvirkede plugin-moduler.



Det følgende eksempelet konfigurerer hurtigmeny-IDen for et visningsprogram.


   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer id=

"org.eclipse.testViewer"

popupMenuId=

"org.eclipse.testViewer#PopupMenu"

/>

</extension>

Siden visningsprogrammets underordnede popupMenu-element ikke brukes i eksempelet over, brukes standardsettet med insertionPoints. Dette settet blir definert som vist nedenfor. Se dokumentasjonen til popupMenu-elementet hvis du vil ha flere opplysninger.

"group.new"             separator="true"
"group.goto"            
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true" 
"group.properties"      separator="true"

Det følgende eksempelet demonstrerer en visningsprogramkonfigurasjon som deklarer tilpassede popupMenu/insertionPoints, men som begrenser objekt- og visningsbidrag med "allowsPlatformContributions"-attributtet. Klienter kan bare bidra til den definerte menyen via org.eclipse.ui.navigator.CommonActionProvider, deklarert for visningsprogrammet (enten på toppnivå eller tilknyttet innholdsutvidelser).

Legg merke til at "popupMenuId"-attributtet ikke er spesifisert samtidig med popupMenu-elementet. Bare en av dem, ikke begge, er en gyldig konfigurasjon.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<popupMenu allowsPlatformContributions=

"false"

id=

"org.eclipse.ui.navigator.resourceContent#PopupMenu"

>

<insertionPoint name=

"group.new"

/>

<insertionPoint name=

"group.open"

separator=

"true"

/>

<insertionPoint name=

"group.openWith"

/>

<insertionPoint name=

"group.port"

separator=

"true"

/>

<insertionPoint name=

"additions"

separator=

"true"

/>

<insertionPoint name=

"group.properties"

separator=

"true"

/>

</popupMenu>

</viewer>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

</viewerContentBinding>

</extension>

Det følgende eksempelet deklarerer at en innholdsutvidelse (id: "org.eclipse.ui.navigator.resourceContent") er bundet til et visningsprogram som samsvarer med IDen "org.eclipse.ui.navigator.resourceContent". (I dette eksempelet samsvarer innholdsutvidelsens og visningsprogrammets IDer, men dette er ikke nødvendig.) Videre vil innholdsutvidelser med en ID som begynner på "org.eclipse.ui.navigator.tests.", blir ignorert.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

<excludes>

<contentExtension pattern=

"org.eclipse.ui.navigator.tests.*"

/>

</excludes>

</viewerContentBinding>

</extension>

Det følgende eksempelet deklarerer en viewerActionBinding for alle actionProviders (ikke nestet under en navigatorContent-utvidelse) som samsvarer med det regulære uttrykket "org.acme.actions.*", men ikke "org.acme.actions.tests.*". Dette uttrykket vil gjøre enhver actionProvider hvis ID begynner med "org.acme.actions.", men ikke "org.acme.actions.tests.", synlig for visningsprogrammet med IDen "org.acme.viewer". Selvsagt gjelder viewerActionBindings bare for actionProvider-elementer som ikke er nestet under et navigatorContent-element. Synligheten til nestede actionProvider-elementer er kontrollert av viewerContentBindings for det omsluttende navigatorContent-elementet.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.acme.actions.*"

/>

</includes>

<excludes>

<actionExtension pattern=

"org.acme.actions.tests.*"

/>

</excludes>

</viewerActionBinding>

</extension>

Det følgende eksempelet gjør actionProvider uten "id"-attributt synlig for visningsprogrammet "org.acme.viewer". En actionProvider uten "id"-attributt har standard-IDen "org.eclipse.ui.navigator.actionProvider.X". Selvsagt gjelder viewerActionBindings bare for actionProvider-elementer som ikke er nestet under et navigatorContent-element. Synligheten til nestede actionProvider-elementer er kontrollert av viewerContentBindings for det omsluttende navigatorContent-elementet.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.eclipse.ui.navigator.actionProvider.*"

/>

</includes>

</viewerActionBinding>

</extension>

Det følgende eksempelet viser hvilke standardegenskaper som er tilgjengelige for visningsprogrammet.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer popupMenuId=

"org.eclipse.ui.tests.navigator.TestView#PopupMenu"

viewerId=

"org.eclipse.ui.tests.navigator.TestView"

>

<options>

<!-- Hide the

"Available Extensions"

tab in the

"Available Customizations"

dialog (available from the

"Filters"

action -->

<property name=

"org.eclipse.ui.navigator.hideAvailableExtensionsTab"

value=

"true"

/>

<!-- Hide the

"Available Customizations"

dialog completely. This includes hiding the filters and the available content extensions. -->

<property name=

"org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"

value=

"true"

/>

<!-- Hide the

"Link with Editor"

action from the toolbar of the viewer -->

<property name=

"org.eclipse.ui.navigator.hideLinkWithEditorAction"

value=

"true"

/>

<!-- Hide the

"Collapse All"

action from the toolbar of the viewer -->

<property name=

"org.eclipse.ui.navigator.hideCollapseAllAction"

value=

"true"

/>

</options>

</viewer>

</extension>