navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Une extension de contenu fournit un fournisseur de contenu et un fournisseur de libellés pouvant être utilisés par un service de contenu de navigateur. L'extension navigatorContent définit les classes spécifiques du fournisseur de contenu, du fournisseur de libellés et du fournisseur d'actions ainsi que les types d'éléments dont a connaissance l'extension.

L'expression triggerPoints décrit les éléments qui provoqueront l'appel de cette extension pour les enfants ou pour les libellés. L'expression possibleChildren décrit les éléments pour lesquels l'extension peut fournir un parent. Les clients doivent décrire tous les éléments qui peuvent être définis comme sélection afin de s'assurer que le lien avec le support de l'éditeur peut se développer correctement vers le noeud droit.

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

Une extension de contenu de navigateur définit un fournisseur de contenu et un fournisseur de libellés pouvant servir à fournir des enfants chaque fois qu'un élément correspond à l'expression triggerPoints. Elle peut également fournir un parent chaque fois qu'un élément correspond à l'expression possibleChildren.

Eventuellement, les clients peuvent également fournir un fournisseur d'actions susceptible de fournir des contributions de menu et de barres d'actions lorsqu'un élément ajouté par l'extension est sélectionné ou correspond à l'expression triggerPoints. Les clients peuvent également choisir d'ajouter un trieur pour trier les éléments ajoutés par l'extension.



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

L'expression d'activation permet aux clients d'indiquer la même expression pour triggerPoints et possibleChildren.

Dans le cas de actionProvider, les clients doivent définir une expression qui signalera à la structure lorsque org.eclipse.ui.navigator.CommonActionProvider doit être appelé. En raison des contributions à IActionBars, les clients doivent être appelés chaque fois qu'un objet qui les intéresse est sélectionné. Par conséquent, les clients doivent faire preuve de discrétion dans leur choix de l'extension à activer.



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

L'expression triggerPoints définit les noeuds d'une arborescence qui doivent provoquer l'appel de cette extension pour les enfants.



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

L'expression possibleChildren définit les noeuds d'une arborescence devant être ajoutés par cette extension. Les clients doivent indiquer lorsque cette extension de contenu peut fournir un parent pour les éléments qui correspondent à l'expression.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Fournit le nom d'une classe implémentant org.eclipse.ui.navigator.CommonActionProvider. Le fournisseur d'actions a la possibilité d'effectuer un ajout au menu contextuel et aux actions redirigeables définies dans IActionBars pour la vue contenant le navigateur. Les clients peuvent également effectuer des contributions directement via le menu de la vue IActionBars.

Un élément actionProvider de niveau supérieur est visible pour un afficheur abstrait si un viewerActionBinding est disponible pour l'élément actionProvider. Pour les éléments actionProviders qui sont imbriqués sous un élément navigatorContent, la visibilité sera contrôlée par l'ID de l'id d'extension navigatorContent. Les fournisseurs d'actions enfant seront automatiquement sélectionnés par les éléments viewerContentBinding correspondants. Pour plus d'informations sur les liaisons de visibilité, reportez-vous à org.eclipse.ui.navigator.viewer.

Les clients peuvent fournir des éléments actionProvider sous l'élément racine extention (homologue d'un autre élément navigatorContent) afin de mieux contrôler leur activation et leur liaison d'afficheur (voir veiwerActionBinding).

Pour les éléments racine actionProviders sans ID, l'ID prend "org.eclipse.ui.navigator.actionProvider.X" comme valeur par défaut. Pour que les éléments actionProvider aient la possibilité d'enrichir les menus ou les barres d'actions d'un afficheur, un élément viewerActionBinding doit être défini (comme partie intégrante du point d'extension org.eclipse.ui.navigator.viewer) qui déclare une liaison entre l'afficheur et l'ID par défaut ("org.eclipse.ui.navigator.actionProvider.*"). Pour plus d'informations, reportez-vous à la documentation relative à viewerActionBinding sous la documentation du schéma de org.eclipse.ui.navigator.viewer.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

Le point d'extension permet de contribuer au menu défini par type.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Définit un filtre qui peut être associé à un afficheur commun. Les filtres communs sont associés à un afficheur comme des extensions de contenu à l'aide de org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Une expression facultative de la structure de base Eclipse qui définit ce que le filtre doit masquer dans une vue.

Par exemple, les clients peuvent décider de masquer toutes les ressources ayant un masque dans leur nom (comme "*.acme"). Lorsque le filtre est actif (activé par défaut ou par l'utilisateur), toutes les ressources dont le nom se termine en "acme" sont masquées.

Les clients peuvent utiliser filterExpression ou l'attribut "class", mais pas les deux.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Un élément commonSorter déclare une sous-classe de org.eclipse.jface.viewers.ViewerSorter utilisée pour trier les enfants dans l'arborescence. L'élément parentExpression imbriqué décrit quand commonSorter doit être utilisé. Si un élément correspond à l'élément parentExpression, ses enfants seront triés par l'élément commonSorter.



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

Un élément parentExpression est utilisé par commonSorter pour déterminer lorsqu'il s'applique. Si l'élément parentExpression d'un élément commonSorter correspond à un élément indiqué, le trieur commonSorter sera utilisé pour trier les enfants de cet élément (renvoyé par le fournisseur de contenu du service de contenu).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Lorsque l'expression triggerPoints de l'extension supprimée et l'extension déclarée sont toutes deux activées sur un élément, cette extension sera appelée, mais pas son extension supprimée. Les clients qui indiquent un élément override doivent également fournir un fournisseur de contenu qui implémente org.eclipse.ui.navigator.IPipelinedTreeContentProvider. Ce dernier fournit des méthodes permettant d'intercepter les requêtes des enfants, des parents et les mises à jour directes de l'afficheur.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Fournit une sous-classe de org.eclipse.ui.navigator.CommonDropAdapterAssistant qui peut fournir une validation par programmation d'une opération de suppression, demander des types de transfert supplémentaires et effectuer l'opération de dépôt.

Un élément dropAssistant sera appelé chaque fois que des éléments déplacés correspondront à l'expression possibleChildren de l'extension navigatorContent et que la cible de dépôt de l'opération sera décrite par l'expression possibleDropTargets de l'élément dropAssistant.

Une extension peut avoir plusieurs adaptateurs de dépôt avec des expressions possibleDropTargets s'excluant mutuellement. Le premier adaptateur de dépôt détecté qui correspond à la cible de dépôt indiquée et renvoie un état OK pour CommonDropAdapterAssistant.validateDrop(...) pourra effectuer le dépôt.



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

Décrit les cibles de dépôt possibles qu'un élément dropAssistant peut traiter.



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

Elément racine générique. L'élément peut être utilisé dans un point d'extension pour définir son expression d'activation. Les enfants d'une expression d'activation sont combinés à l'aide de l'opérateur and.



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

Cet élément représente une opération NOT en résultat de l'évaluation de son expression de sous-élément.



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

Cet élément représente une opération AND en résultat de l'évaluation de ses expressions de sous-élément.



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

Cet élément représente une opération OR en résultat de l'évaluation de ses expressions de sous-élément.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Cet élément permet d'effectuer une instance de vérification de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si le type de l'objet est un sous-type du type spécifié par la valeur de l'attribut. Dans le cas contraire, EvaluationResult.FALSE est renvoyé.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Cet élément permet d'évaluer l'état de la propriété de l'objet concerné. L'ensemble de propriétés testables peut être développé à l'aide du point d'extension du testeur de propriété. L'expression de test renvoie EvaluationResult.NOT_LOADED si le testeur de propriété effectuant le test réel n'est pas encore chargé.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Teste une propriété système en appelant la méthode System.getProperty et compare le résultat avec la valeur spécifiée via l'attribut value.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Cet élément permet d'effectuer une vérification d'égalité de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si l'objet est égal à la valeur fournie par la valeur de l'attribut. Dans le cas contraire, EvaluationResult.FALSE est renvoyé.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Cet élément permet de tester le nombre d'éléments d'une collection.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Cet élément change l'objet à inspecter pour tous les éléments enfant en objet référencé par la variable donnée. Si la variable ne peut pas être résolue, l'expression émet une exception ExpressionException lors de l'évaluation. Les enfants d'une expression with sont combinés à l'aide de l'opérateur and.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Cet élément change l'objet à inspecter pour tous les éléments enfant en objet référencé par la variable donnée. Si la variable ne peut pas être résolue, l'expression émet une exception ExpressionException lors de l'évaluation. Les enfants d'une expression with sont combinés à l'aide de l'opérateur and.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Cet élément permet d'adapter l'objet actif en fonction du type spécifié par le type d'attribut. L'expression renvoie l'indication "non chargé" si l'adaptateur ou le type référencé n'est pas encore chargé. Elle émet une exception ExpressionException lors de la détermination de l'existence du nom du type. Les enfants d'une expression adapt sont combinés à l'aide de l'opérateur and.



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

<!ATTLIST iterate

operator (or|and) >

Cet élément permet d'effectuer une itération sur une variable qui est de type java.util.Collection. Si l'objet actif n'est pas du type java.util.Collection, une exception ExpressionException sera émise lors de l'évaluation de l'expression.




Ajout de contenu

L'exemple suivant illustre une extension de contenu qui fournit un contenu de ressource. L'expression triggerPoints détermine si cette extension est appelée initialement. Si un élément viewerContentBinding correspond à cette extension avec l'attribut "isRoot" défini sur true, l'extension sera utilisée, quel que soit le résultat de la correspondance de l'élément racine à l'expression 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>

Ajout d'actions

Les clients peuvent utiliser des contributions d'objet ou d'afficheur (voir org.eclipse.ui.popupMenus) pour fournir des actions pour leur vue. Il arrive que les clients requièrent un degré de flexibilité plus élevé que ces méthodes n'autorisent. Par conséquent, l'infrastructure du navigateur commun supporte l'ajout de fournisseurs d'actions. Les "Fournisseurs d'actions" sous-classent org.eclipse.ui.actions.ActionGroup et peuvent remplir les barres d'actions et les menus en fonction de différents événements (respectivement, sélection et clic droit).

Les clients peuvent associer un ou plusieurs fournisseurs d'action à une extension, ou déclarer les fournisseurs d'actions en tant que contributions de niveau inférieur, sans être associés à une extension de contenu quelconque. Les fournisseurs d'actions de niveau supérieur doivent être associés à une instance d'afficheur à l'aide du point d'extension org.eclipse.ui.navigator.viewer/viewerActionBinding. Les fournisseurs d'actions imbriqués sont automatiquement associés à un afficheur suivant que leur extension de contenu est également associée à l'afficheur (voir org.eclipse.ui.navigator/viewerContentBinding).

L'exemple suivant illustre les deux méthodes. Le fournisseur "TestNestedActionProvider" aura la possibilité de contribuer au menu et à org.eclipse.ui.IActionBars uniquement lorsque l'extension "org.eclipse.ui.tests.navigator.testContent" sera visible et active. Si l'utilisateur désactive l'extension test dans la boîte de dialogue "Personnalisations disponibles", le fournisseur d'actions imbriqué n'aura plus la possibilité de contribuer.

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

Les clients peuvent définir des filtres à l'aide de sous-classes de org.eclipse.jface.viewers.ViewerFilter ou par le biais d'expressions de la structure de base Eclipse. L'exemple suivant illustre les deux techniques. Ils peuvent uniquement utiliser l'une des deux options. En cas d'erreur de spécification des extensions, seul le filtre de l'expression de la structure de base sera respectée. Les zones de nom et de description sont traduisibles et doivent représenter des chaînes externalisées dans des environnements réels.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"Masquer les objets TestItem qui se terminent par le numéro &quot;3&quot;"

id=

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

name=

"TestItems se terminant par &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Masque toutes les instances de Test Item"

id=

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

name=

"Filtre d'expression TestItem (doit être trié par ordre alphab..)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

Un trieur commun est déterminé pour un ensemble d'enfants en fonction de leur parent. La classe du trieur doit sous-classer 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>

L'exemple suivant illustre la manière d'ajouter des actions de raccourci d'assistant pour "Nouveau dossier" et "Nouveau fichier", qui sont activés dans les sous-classes de org.eclipse.core.resources.IResource. Les clients peuvent utiliser tous les composants de org.eclipse.core.expressions nécessaires pour décrire quand les options de menu sont disponibles. L'élément wizardId indiqué ci-dessous doit correspondre à l'un des points d'extension org.eclipse.ui.xxxWizards.

Pour les clients qui créent leurs propres afficheurs ou parties de vue, veillez à utiliser org.eclipse.ui.navigator.WizardActionGroup pour alimenter le menu. Reportez-vous à cette classe pour plus d'informations sur l'utilisation de cette fonction.


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