Configuratie van gemeenschappelijke viewer

org.eclipse.ui.navigator.viewer

3.2

Met het element viewer kunt u de configuratie van een gemeenschappelijke viewer definiëren. De extensie kan het ID van een aangepast voorgrondmenu bevatten, ondersteuning voor 'Koppelen aan editor' bieden, een filterdialoogvenster beschikbaar stellen en/of het dialoogvenster 'Beschikbare aanpassingen' verstrekken. Bovendien kunt u met geneste configuratie-elementen de structuur en het gedrag van het voorgrondmenu volledig naar uw hand zetten.

viewerContentBinding bindt gedefinieerde contentextensies (via het extensiepunt navigatorContent) aan viewers (gedefinieerd via het extensiepunt org.eclipse.ui.views). Elke contentextensie die aan een viewer is gebonden, is op visible ingesteld. Een contentservice (org.eclipse.ui.navigator.INavigatorContentService) retourneert geen extensies die niet zichtbaar zijn voor het ID van de viewer.

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

Hiermee kunt u de eigenschappen van een gewone viewer configureren. In clients moet het viewonderdeel verder worden gemaakt met de extensie org.eclipse.ui.views.



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

<!ATTLIST viewerContentBinding

viewerId CDATA #REQUIRED>

In een client moet minstens één viwerContentBinding-element worden gedefinieerd om aan te geven welke contentextensies en gemeenschappelijke filters zichtbaar moeten zijn voor de viewer. Als het ID van een contentextensie of gemeenschappelijke filter overeenkomt met de instructie includes van viewerContentBinding en niet wordt uitgesloten met de instructie excludes, is de extensie of de filter zichtbaar (visible). Als een extensie of filter niet zichtbaar is, wordt de extensie niet gebruikt voor het ophalen van content en wordt de extensie niet afgebeeld in het dialoogvenster met beschikbare filters.

In een client kan met het element includes worden aangegeven welke extensies zichtbaar zijn voor de viewer. Met het element excludes kunt u daarentegen juist extensies verbergen die u niet zichtbaar wilt maken. Verder kunt u met het kenmerk "isRoot" aangeven of er expliciet query's op de extensie kunnen worden uitgevoerd voor hoofdelementen (via ITreeContentProvider.getElements()). Als "isRoot" voor een of meer contentExtension-elementen op true is ingesteld in de instructie includes, worden query's voor hoofdelementen alleen op deze elementen uitgevoerd. Het kenmerk "isRoot" geldt niet voor uitsluitingen.

Voor een viewer kunnen meerdere exemplaren van viewerContentBindings zijn gedefinieerd. De includes- en excludes-instructies worden dan samengevoegd.



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

<!ATTLIST viewerActionBinding

viewerId CDATA #REQUIRED>

Voor een client moeten de actieproviders worden gedefinieerd die voor de viewer beschikbaar zijn. In een client kan met het element includes worden aangegeven welke extensies zichtbaar zijn voor de viewer. Met het element excludes kunt u daarentegen juist extensies verbergen die u niet zichtbaar wilt maken.

Voor een viewer kunnen meerdere exemplaren van viewerActionBinding zijn gedefinieerd. De includes- en excludes-instructies worden dan samengevoegd.

Als de definitie van actionProvider niet in de definitie van navigatorContent is genest, kan in een client een aangepast ID worden opgegeven. Als er geen ID wordt opgegeven, wordt "org.eclipse.ui.navigator.actionProvider.X" als standaardwaarde gehanteerd. Als de actieprovider geen specifiek ID heeft, kan deze door een client worden opgehaald als viewerActionBinding voor het standaard-ID wordt opgegeven. In de sectie met voorbeelden ziet u een demonstratie.



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

Hiermee kunt u een reeks patronen definiëren die moeten worden opgenomen bij het zoeken naar contentextensies voor de viewer die met het kenmerk "viewerId" overeenkomt. Als een item zowel in de instructies includes als de instructie excludes voorkomt, wordt de instructie includes gebruikt.



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

Hiermee kunt u een reeks patronen definiëren die moeten worden uitgesloten bij het zoeken naar contentextensies voor de viewer die met het kenmerk "viewerId" overeenkomt. Als een item zowel in de instructies includes als de instructie excludes voorkomt, wordt de instructie includes gebruikt.



<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

pattern CDATA #REQUIRED

isRoot  (true | false) >

Dit is het ID (of bijbehorende patroon) van een contentextensie waarop query's moeten worden uitgevoerd door ITreeContentProvider.getElements() of ITreeContentProvider.getChildren() voor het hoofdelement van de viewer of gemeenschappelijke filter die in het dialoogvenster "Beschikbare filters" moet worden afgebeeld.

Met "isRoot" kunnen specifieke hoofdextensies worden geselecteerd ter vervanging van de extensies die anders voor het invoerelement van de viewer zouden zijn ingeschakeld (gebaseerd op de bijbehorende expressie triggerPoints van het viewerinvoerelement).

Raadpleeg de documentatie van viewerContentBinding voor meer informatie.



<!ELEMENT actionExtension EMPTY>

<!ATTLIST actionExtension

pattern CDATA #REQUIRED>

Hiermee kan de actie-extensie aanleveringen voor het voorgrondmenu en de werkbalken verstrekken.

Raadpleeg de documentatie van viewerActionBinding voor meer informatie.



<!ELEMENT popupMenu (insertionPoint*)>

<!ATTLIST popupMenu

id                          CDATA #IMPLIED

allowsPlatformContributions (true | false) >

Het element popupMenu kan alleen worden gedefinieerd als het kenmerk "popupMenuId" van het element viewer niet is opgegeven.

Het element popupMenu biedt mogelijkheden voor verdere aanpassing van het voorgrondmenu dat aan de viewer is gekoppeld. Om ervoor te zorgen dat de opties juist worden toegepast, moet een instance van de viewer een navigatoractieservice (org.eclipse.ui.navigator.NavigatorActionService) machtigen, die zich op dezelfde manier als een actiegroep (org.eclipse.ui.ActionGroup) gedraagt. Zie de documentatie van deze API-klasse voor meer informatie over het benutten van deze functionaliteit. Voor een client die aan een instance van org.eclipse.ui.navigator.CommonNavigator is gekoppeld, hoeft geen verdere actie te worden ondernomen.

Het element popupMenu declareert een of meer invoegposities (insertionPoints), die door contribuanten worden gebruikt voor het organiseren van aanleveringen in een logische geordende en consistente lijst.
Als voor een client alleen het kenmerk "popupMenuId" van het element viewer is opgegeven, wordt voor de reeks insertionPoints-elementen van het voorgrondmenu de volgende lijst als standaard gehanteerd in de gegeven volgorde:

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


Als door een client programmatisch naar deze waarden moet worden verwezen, kunnen de bijbehorende constanten uit org.eclipse.ui.navigator.ICommonMenuConstants worden gebruikt.

Als de menu's op een client moeten worden aangepast, is het raadzaam met deze lijst te beginnen en invoegposities zo nodig toe te voegen of te verwijderen. Bovendien is het raadzaam elke groepsnaam met "group." te laten beginnen. .

Als het element popupMenu is opgegeven en géén onderliggende insertionPoint-elementen bevat, bevat het voorgrondmenu geen gepubliceerde invoegposities. Natuurlijk zijn programmatische clients niet beperkt in het waar nodig toevoegen van invoegposities. Als een client een viewer definieert, is het raadzaam de invoegposities voor documentatiedoeleinden en omwille van de duidelijkheid naar downstream-extensies van viewers/navigators te publiceren, of expliciet te documenteren welke invoegposities als API worden beschouwd en welke invoegposities intern zijn.



<!ELEMENT insertionPoint EMPTY>

<!ATTLIST insertionPoint

name      CDATA #REQUIRED

separator (true | false) >

Hiermee kunt u een invoegpositie voor het voorgrondmenu definiëren. U geeft de naam op van het punt waarnaar clients moeten verwijzen en u geeft aan of de invoegpositie als scheiding of als groepsmarkering moet worden weergegeven.



<!ELEMENT options (property+)>

Hiermee kunt u opties voor de viewer opgeven en de presentatie ervan aanpassen. Zie org.eclipse.ui.navigator.INavigatorViewerDescriptor voor de lijst van beschikbare eigenschappen.



<!ELEMENT property EMPTY>

<!ATTLIST property

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Geef een paar als naam=waarde op. De waarde wordt onbewerkt aan de viewer doorgegeven. (Een lege tekenreeks wordt dus als zodanig gedistribueerd.) Zie org.eclipse.ui.navigator.INavigatorViewerDescriptor voor de lijst van beschikbare eigenschappen en de bijbehorende beschrijvingen.



<!ELEMENT dragAssistant EMPTY>

<!ATTLIST dragAssistant

class    CDATA #REQUIRED

viewerId CDATA #REQUIRED>

Er is een assistent voor slepen en neerzetten beschikbaar die eenvoudige mogelijkheden voor het leveren van extra overdrachtstypen en logica voor het instellen van de verslepingsgegevens biedt. Dit element is niet vereist, omdat org.eclipse.ui.navigator.CommonViewer al het type org.eclipse.jface.util.LocalSelectionTransfer verstrekt.

Definieer deze extensie alleen op clients voor plugins met een kleine dependency-structuur. De assistenten moeten vóór het maken van de viewer worden geladen, waardoor ook gekoppelde plugins worden geladen.



In het volgende voorbeeld wordt het voorgrondmenu-ID voor een viewer geconfigureerd.


   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer id=

"org.eclipse.testViewer"

popupMenuId=

"org.eclipse.testViewer#PopupMenu"

/>

</extension>

Aangezien het onderliggende viewerelement popupMenu niet in het bovenstaande voorbeeld wordt gebruikt, wordt de standaardreeks insertionPoints gehanteerd. De definitie van deze reeks is als volgt. Zie de documentatie van het element popupMenu voor meer informatie.

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

In het volgende voorbeeld ziet u een demonstratie van een viewerconfiguratie waarin aangepaste exemplaren van popupMenu/insertionPoints worden gedeclareerd, maar waarbij object- en vieweraanleveringen met het kenmerk "allowsPlatformContributions" worden beperkt. Clients kunnen alleen bijdragen leveren aan het gedefinieerde menu via actieproviders (org.eclipse.ui.navigator.CommonActionProvider) die voor de viewer (hoogste niveau of aan contentextensies) is gekoppeld.

Het kenmerk "popupMenuId" wordt niet tegelijkertijd met het element popupMenu opgegeven. U mag slechts één van de twee opgeven.

   

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

In het volgende voorbeeld wordt één contentextensie (met ID "org.eclipse.ui.navigator.resourceContent") gebonden aan een viewer waarvan het ID overeenkomt met "org.eclipse.ui.navigator.resourceContent". (In dit voorbeeld komen de ID's van de contentextensie en de viewer met elkaar overeen, maar dit is niet verplicht.) Daarnaast wordt elke contentextensie genegeerd waarvan het ID met "org.eclipse.ui.navigator.tests." begint.

   

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

In het volgende voorbeeld wordt viewerActionBinding gedeclareerd voor alle actieproviders (niet genest in de extensie navigatorContent) die overeenkomen met de expressie "org.acme.actions.*" maar niet met "org.acme.actions.tests.*". Deze expressie maakt alle actionProvider-elementen waarvan het ID met "org.acme.actions." (maar niet met "org.acme.actions.tests.") begint, zichtbaar (visible) voor de viewer met ID "org.acme.viewer". Uiteraard zijn de exemplaren van viewerActionBindings alleen van toepassing op actionProvider-elementen die niet in het element navigatorContent zijn genest. De zichtbaarheid van geneste actionProvider-elementen wordt bestuurd door viewerContentBindings voor het insluitende 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>

In het volgende voorbeeld wordt elke actieprovider zonder ID op visible voor de viewer "org.acme.viewer" ingesteld. Voor de actionProvider-elementen zonder kenmerk "id" wordt het standaard-ID "org.eclipse.ui.navigator.actionProvider.X" gehanteerd. Uiteraard zijn de exemplaren van viewerActionBindings alleen van toepassing op actionProvider-elementen die niet in het element navigatorContent zijn genest. De zichtbaarheid van geneste actionProvider-elementen wordt bestuurd door viewerContentBindings voor het insluitende 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>

In het volgende voorbeeld ziet u de standaardeigenschappen die voor de viewer beschikbaar zijn.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer popupMenuId=

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

viewerId=

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

>

<options>

<!-- Tabblad

"Beschikbare extensies"

verbergen in dialoogvenster

"Beschikbare aanpassingen"

(via de actie

"Filters"

) -->

<property name=

"org.eclipse.ui.navigator.hideAvailableExtensionsTab"

value=

"true"

/>

<!-- Tabblad

"Beschikbare aanpassingen"

volledig verbergen. Hiermee worden ook de filters en beschikbare contentextensies verborgen. -->

<property name=

"org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"

value=

"true"

/>

<!-- Tabblad

"Koppelen aan editor"

verbergen in werkbalk van viewer -->

<property name=

"org.eclipse.ui.navigator.hideLinkWithEditorAction"

value=

"true"

/>

<!-- Tabblad

"Alles samenvouwen"

verbergen in werkbalk van viewer -->

<property name=

"org.eclipse.ui.navigator.hideCollapseAllAction"

value=

"true"

/>

</options>

</viewer>

</extension>