Konfiguration af fælles fremviser

org.eclipse.ui.navigator.viewer

3.2

Elementet viewer definerer konfigurationen for en fælles fremviser. Udvidelsen kan stille en tilpasset pop op-menu-id til rådighed, tilsidesætte, om fremviseren stiller link med editorunderstøttelse til rådighed, og/eller stille en filterdialogboks og /eller dialogboksen Tilgængelige tilpasninger til rådighed. Desuden giver indlejrede konfigurationselementer fuld kontrol over struktur og funktionsmåde for pop op-kontekstmenuen.

viewerContentBinding binder definerede indholdsudvidelser vha. udvidelsespunktet navigatorContent til fremviseren, der defineres vha. udvidelsespunktet org.eclipse.ui.views. Alle indholdsudvidelser, der er bundet til fremviseren, beskrives som synlige. Et indholdsserviceprogram (org.eclipse.ui.navigator.INavigatorContentService) returnerer ikke nogen udvidelser, der ikke er synlige for dets fremvisnings-id.

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

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

navn  CDATA #IMPLIED>


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

<!ATTLIST viewer

viewerId    CDATA #REQUIRED

popupMenuId CDATA #IMPLIED>

Indeholder grundlæggende konfiguration, der etablerer en fremvisers karakteristika. Klienter skal også definere en org.eclipse.ui.views-udvidelse for at oprette fremvisningsdelen.



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

<!ATTLIST viewerContentBinding

viewerId CDATA #REQUIRED>

Klienter skal definere et eller flere viwerContentBinding-elementer for at beskrive, hvilke indholdsudvidelser og fælles filtre der er synlige for fremviseren. En indholdsudvidelse eller et fælles filter er synligt, hvis id'en på indholdsudvidelsen eller det fælles filter matcher en inkluderingssætning under en viewerContentBinding og ikke udelukkes af en udeladelessætning. Hvis en indholdsudvidelse eller et fælles filter ikke er synligt for fremviseren, bliver udvidelsen aldrig spurgt om indhold af et indholdsserviceprogram eller præsenteret for brugeren i de tilgængelige filterdialogbokse.

Klienter kan definere inkluderingselementet for at vælge, hvilke udvidelser der er synlige for fremviseren, og tilsvarende definere udeladelseselementet for udvidelser, der ikke skal gøres synlige i fremviseren. Klienter kan yderligere definere udvidelserne, der eksplicit forespørges om til rodelementer gennem ITreeContentProvider.getElements()) for attributten "isRoot". Hvis et eller flere contentExtension-elementer har "isRoot" angivet som true i inkluderingssætningen, forespørges kun disse udvidelser om rodelementer. Attributten "isRoot" har ingen betydning for udeladelser.

En fremviser kan have flere viewerContentBindings defineret, og deres inkluderings/udeladelsessætninger sammensættes til at producere den endelige funktionsmåde.



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

<!ATTLIST viewerActionBinding

viewerId CDATA #REQUIRED>

Klienter skal definere, hvilke funktionsudbydere der er synlige i deres fremviser. Klienter kan definere inkluderingselementet for at vælge, hvilke udvidelser der er synlige for fremviseren, og tilsvarende definere udeladelseselementet for udvidelser, der ikke skal gøres synlige i fremviseren.

En fremviser kan have flere viewerContentBindings defineret, og deres inkluderings/udeladelsessætninger sammensættes til at producere den endelige funktionsmåde.

Klienter kan angive en tilpasset id til definitioner af actionProvider, der ikke er indlejret under en navigatorContent-definition. Hvis klienter ikke angiver en id, anvendes id'en for "org.eclipse.ui.navigator.actionProvider.X" som standard. Klienter, der vil opsamle actionProvider'ere uden en specifik id, skal definere en viewerActionBinding som standard-id. Se under eksempelafsnittet, hvordan dette gøres.



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

Definér et sæt mønstre, der skal inkluderes, når der søges efter indholdsudvidelser til den fremviser, der matcher attributten "viewerId". Når inkluderings- og udeladelsessætninger skærer hinanden, får inkluderingssætningerne forrang.



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

Definér et sæt mønstre, der skal udelades, når der søges efter indholdsudvidelser til den fremviser, der matcher attributten "viewerId". Når inkluderings- og udeladelsessætninger skærer hinanden, får inkluderingssætningerne forrang.



<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

pattern CDATA #REQUIRED

isRoot  (true | false) >

Angiver id'en eller det matchende mønster på en indholdsudvidelse, der skal rettes forespørgsel om af ITreeContentProvider.getElements() eller ITreeContentProvider.getChildren() om roden af fremviseren eller et fælles filter, der skal være tilgængeligt for brugeren i dialogboksen Tilgængelige filtre.

Klienter kan angive "isRoot" for at vælge bestemte rodudvidelser for at tilsidesætte de udvidelser, der ellers skulle være aktiveret for fremviserens inputelement (ud fra matchende triggerPoints-udtryk for fremviserens inputelement).

Der er flere oplysninger i dokumentationen til viewerContentBinding.



<!ELEMENT actionExtension EMPTY>

<!ATTLIST actionExtension

pattern CDATA #REQUIRED>

Angiver, at funktionsudvidelsen skal have mulighed for at levere til kontekstmenuen og funktionslinjer.

Der er flere oplysninger i dokumentationen til viewerActionBinding.



<!ELEMENT popupMenu (insertionPoint*)>

<!ATTLIST popupMenu

id                          CDATA #IMPLIED

allowsPlatformContributions (true | false) >

Et popupMenu-element kan kun defineres, hvis attributten "popupMenuId" for elementet fremviser ikke er angivet.

Elementet popupMenu tillader yderligere tilpasning af den kontekstmenu, der er knyttet til fremviseren. For at disse indstillinger kan anvendes korrekt, skal en forekomst af fremviseren delegere til en org.eclipse.ui.navigator.NavigatorActionService, der fungerer som en normal org.eclipse.ui.ActionGroup. Der er flere oplysninger i dokumentationen til denne API-klasse om udnyttelse af denne funktionalitet. Klienter, der anvender en forekomst af org.eclipse.ui.navigator.CommonNavigator behøver ikke gøre mere.

En popupMenu erklærer en eller flere insertionPoints, der anvendes af bidragydere til at organisere deres bidrag til en meningsfuld, mere brugervenlig konsistent liste.
Hvis klienter kun angiver attributten "popupMenuId" for fremviser-elementet, vil sættet af insertionPoints, der anvendes af kontekstmenuen som standard angive følgende liste i den givne rækkefølge.

"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, der vil henvise til disse værdier programmeringsmæssigt, kan bruge de tilsvarende konstanter i org.eclipse.ui.navigator.ICommonMenuConstants.

Klienter, der vil tilpasse deres menuer, opfordres til at starte med denne liste og tilføje eller fjerne indsætningspunkter efter behov. Klienter opfordres også til at efterfølge mønstret i begyndelsen af hvert gruppenavn med "group".

Hvis elementet popupMenu er angivet og IKKE indeholder underordnede insertionPoint-elementer, vil kontekstmenuen ikke have nogen publicerede indsætningspunkter. Naturligvis er programbaserede klienter ikke forhindret i at tilføje deres egne indsætningspunkter efter behov. Klienter, der definerer fremvisere, opfordres til at publicere deres indsætningspunkter af hensyn til dokumentation og klarhed for downstream-udvidelser til deres fremvisere/navigatorer eller eksplicit at dokumentere, hvilke indsætningspunkter der betragtes som API'er, og hvilke der betragtes som interne.



<!ELEMENT insertionPoint EMPTY>

<!ATTLIST insertionPoint

name      CDATA #REQUIRED

separator (true | false) >

Definerer et indsætningspunkt for kontekstmenuen. Indeholder navnet på det punkt for klienten, der skal henvises til, og om indsætningspunktet skal gengives som en separator eller en gruppemarkering.



<!ELEMENT options (property+)>

Stiller indstillinger til rådighed for fremviseren for at tilpasse, hvordan den præsenteres for brugeren. Se tilgængelige egenskaber under org.eclipse.ui.navigator.INavigatorViewerDescriptor.



<!ELEMENT property EMPTY>

<!ATTLIST property

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Stil et name=værdipar til rådighed. Værdien stilles til rådighed som den er for fremviseren, dvs. at tomme strenge videreføres som tomme strenge. Der er oplysninger under org.eclipse.ui.navigator.INavigatorViewerDescriptor om tilgængelige egenskaber og deres erklæring.



<!ELEMENT dragAssistant EMPTY>

<!ATTLIST dragAssistant

class    CDATA #REQUIRED

viewerId CDATA #REQUIRED>

En Træk og placér-assistent stiller letvægtshook til rådighed for at levere ekstra overførselstyper og logik til at angive træk-data. Dette element er ikke påkrævet, da den grundlæggende org.eclipse.ui.navigator.CommonViewer stiller en org.eclipse.jface.util.LocalSelectionTransfer-type til rådighed.

Klienter bør kun definere denne udvidelse i letvægts-plugins med flade afhængighedstræer. Træk-assistenten skal indlæses på forhånd, når fremviseren oprettes, hvilket vil medføre indlæsning af berørte plugins.



Det følgende eksempel konfigurerer pop op-menu-id'en for en fremviser:


   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer id=

"org.eclipse.testViewer"

popupMenuId=

"org.eclipse.testViewer#PopupMenu"

/>

</extension>

Da det underordnede popupMenu-element for fremviseren ikke anvendes i eksemplet ovenfor, anvendes standardsættet af insertionPoints. Sættet defineres som følger. Der er flere oplysninger i dokumentationen til elementet popupMenu.

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

Følgende eksempel viser en fremviserkonfiguration, der erklærer en tilpasset popupMenu/insertionPoints, men begrænser objekt- og fremviserbidrag med attributten "allowsPlatformContributions". Klienter må kun bidrage til den definerede menu via org.eclipse.ui.navigator.CommonActionProvider'ere, der er erklæret for fremviseren - enten øverste niveau eller knyttet til indholdsudvidelser.

Bemærk, at attributten "popupMenuId" ikke samtidig er angivet ,ed elementet popupMenu. Kun en, ikke begge, er en gyldig konfiguration.

   

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

Følgende eksempel erklærer, at en indholdsudvidelse (id: "org.eclipse.ui.navigator.resourceContent") er bundet til en fremviser, der matcher id'en "org.eclipse.ui.navigator.resourceContent". I dette eksempel matcher id'erne for indholdsudvidelse og fremviser, men det er ikke påkrævet. Desuden vil enhver indholdsudvidelse med en id, der begynder med "org.eclipse.ui.navigator.tests.", blive ignoreret.

   

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

Følgende eksempel erklærer en viewerActionBinding for alle actionProvider, der ikke er indlejret under en navigatorContent-udvidelse, der matcher det almindelige udtryk "org.acme.actions.*", men ikke "org.acme.actions.tests.*". Denne udvidelse vil gøre enhver actionProvider, hvis id begynder med "org.acme.actions.", men ikke "org.acme.actions.tests." synlige for fremviseren med id'en "org.acme.viewer". Naturligvis anvendes viewerActionBindings kun til actionProvider-elementer, der ikke er indlejret under et navigatorContent-element. Synligheden af indlejrede actionProvider-elementer styres af viewerContentBindings for det omsluttende navigatorContent-element.

   

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

Følgende eksempel før enhver actionProvider uden attributten "id" synlig for fremviseren "org.acme.viewer". actionProvider'ere uden at tributten "id" har en standard-id, "org.eclipse.ui.navigator.actionProvider.X". Naturligvis anvendes viewerActionBindings kun til actionProvider-elementer, der ikke er indlejret under et navigatorContent-element. Synligheden af indlejrede actionProvider-elementer styres af viewerContentBinding'er for det omsluttende navigatorContent-element.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

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

/>

</includes>

</viewerActionBinding>

</extension>

Følgende eksempel demonstrerer standardegenskaberne, der er tilgængelige for fremviseren.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer popupMenuId=

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

viewerId=

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

>

<options>

<!-- Skjul skillebladet

"Tilgængelige udvidelser"

i dialogboksen

"Tilgængelige tilpasninger"

(der er tilgængelig fra

"Filtre"

funktion -->

<egenskab name=

"org.eclipse.ui.navigator.hideAvailableExtensionsTab"

value=

"true"

/>

<!-- Skjul dialogboksen

"Tilgængelige tilpasninger"

fuldstændig. Det omfatter, at filtre og tilgængelige indholdsudvidelser skjules. -->

<property name=

"org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"

value=

"true"

/>

<!--Skjul funktionen

"Link med editor"

fra fremviserens værktøjslinje -->

<property name=

"org.eclipse.ui.navigator.hideLinkWithEditorAction"

value=

"true"

/>

<!-- Skjul funktionen

"Skjul alle"

på fremviserens værktøjslinje -->

<property name=

"org.eclipse.ui.navigator.hideCollapseAllAction"

value=

"true"

/>

</options>

</viewer>

</extension>