navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Le estensioni dei contenuti forniscono un contenuto e un fornitore di etichette che possono essere utilizzati da un servizio di navigazione. L'estensione navigatorContent definisce le classi specifiche per il fornitore del contenuto, delle etichette e delle azioni, oltre ai tipi di elementi noti all'estensione.

L'espressione triggerPoints descrive gli elementi che faranno sì che l'estensione venga richiamata per gli elementi secondari o per le etichette. L'espressione possibleChildren descrive gli elementi per cui l'estensione potrebbe fornire un elemento principale. I client dovrebbero descrivere tutti gli elementi che possono essere impostati come selezione per assicurarsi che il supporto di collegamento all'editori possa espandersi al nodo corretto.

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

L'estensione del contenuto di navigazione definisce un fornitore di contenuti e di etichette che può essere utilizzato per fornire elementi secondari ogni qual volta un elemento corrisponde all'espressione triggerPoints e per fornire un elemento principale ogni qual volta un elemento corrisponde all'espressione possibleChildren.

Facoltativamente, i client possono anche fornire un fornitore di azioni che fornisce contributi ai menu e alla barra di azioni quando viene selezionato un elemento proveniente da tale estensione o che corrisponde all'espressione triggerPoints. I client possono anche scegliere di aggiungere un'utilità di ordinamento per ordinare gli elementi forniti dall'estensione.



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

L'espressione di abilitazione consente ai client di specificare la stessa espressione sia per triggerPoints che per possibleChildren.

Nel caso di actionProvider, i client devono definire un'espressione che indicherà al framework quando i rispettivi org.eclipse.ui.navigator.CommonActionProvider verranno richiamati. A causa dei contributi a IActionBars, i client devono essere richiamati ogni qual volta viene selezionato un oggetto a cui sono interessati. Di conseguenza, i client dovrebbero decidere quando abilitare le proprie estensioni con discrezione.



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

L'espressione triggerPoints definisce i nodi della struttura che fanno sì che l'estensione venga richiamata per gli elementi secondari.



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

L'espressione possibleChildren definisce i nodi della struttura che possono essere aggiunti da questa estensione. I client dovrebbero indicare quando l'estensione dei contenuti può fornire un elemento principale per gli elementi che corrispondono all'espressione.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Fornisce il nome di una classe che implementa org.eclipse.ui.navigator.CommonActionProvider. Il fornitore dell'azione può contribuire al menu di scelta rapida e alle azioni definite in IActionBars per la vista che contiene il pannello di selezione. I client possono anche contribuire direttamente al menu Visualizza attraverso il menu Visualizza di IActionBars.

Un actionProvider di livello superiore è visibile ad un visualizzatore astratto se esiste un viewerActionBinding per quel actionProvider. Per gli actionProviders nidificati in un elemento navigatorContent, la visibilità verrà controllata dall'ID di estensione navigatorContent. I fornitori delle azioni secondarie, verranno scelti automaticamente dai viewerContentBinding corrispondenti. Per ulteriori informazioni sui binding di visibilità, vedere org.eclipse.ui.navigator.viewer.

I client possono fornire actionProvider nell'elemento extention principale (con peer ad altri navigatorContent) per controllarne meglio l'attivazione e il binding del visualizzatore (vedere veiwerActionBinding).

Per gli actionProviders principali senza ID, per impostazione predefinita viene utilizzato l'ID "org.eclipse.ui.navigator.actionProvider.X". Affinché questi actionProvider possano contribuire ai menu o alle barre di azioni dei visualizzatori, sarà necessario definire un viewerActionBinding (come parte di org.eclipse.ui.navigator.viewer extension point) che dichiara un binding tra uno specifico visualizzatore e l'ID predefinito ("org.eclipse.ui.navigator.actionProvider.*"). Per ulteriori informazioni, fare riferimento alla documentazione relativa a viewerActionBinding nella documentazione sullo schema di org.eclipse.ui.navigator.viewer.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

Il punto di estensione consente di contribuire al menu definito dal tipo.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Definisce un filtro che può essere associato ad un particolare visualizzatore comune. I filtri comuni vengono associati ai visualizzatori come estensioni di contenuto utilizzando org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Una Eclipse Core Expression che definisce gli elementi che il filtro deve nascondere a una determinata vista.

Ad esempio, i client possono decidere di nascondere tutte le risorse con un determinato modello nel nome (ad esempio, "*.acme"). Quando il filtro è attivo (attivato per impostazione predefinita o dall'utente), tutte le risorse che finiscono in "acme" verranno nascoste all'utente.

I client possono utilizzare l'attributo filterExpression o "class", ma non entrambi.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

commonSorter dichiara una sottoclasse di org.eclipse.jface.viewers.ViewerSorter, utilizzata per ordinare gli elementi secondari nella struttura ad albero. La parentExpression nidificata descrive quando utilizzare commonSorter. Se un elemento corrisponde a parentExpression, i relativi elementi secondari verranno ordinati dal commonSorter.



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

parentExpression viene utilizzato da commonSorter per stabilire quando può essere applicato. Se il parentExpression di un commonSorter corrisponde a un elemento specificato, quel commonSorter verrà utilizzato per ordinare gli elementi secondari di tale elemento (come restituito dal fornitore di contenuti del servizio contenuti).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Quando l'espressione triggerPoints dell'estensione eliminata e dell'estensione dichiarata vengono entrambe abilitate per un determinato elemento, questa estensione verrà richiamata, ma le proprie estensioni eliminate, no. I client che specificano un elemento override devono anche fornire un fornitore di contenuti che implementa org.eclipse.ui.navigator.IPipelinedTreeContentProvider, che a sua volta fornisce metodi per intercettare le richieste per gli aggiornamenti secondari, principali e diretti per il visualizzatore.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Fornisce una sottoclasse di org.eclipse.ui.navigator.CommonDropAdapterAssistant che può fornire una convalida programmatica per le operazioni di trascinamento, richiedere ulteriori tipi di trasferimento e gestire le operazioni di trascinamento.

Verrà richiamato dropAssistant ogni qual volta gli elementi trascinati corrisponderanno all'espressione possibleChildren dell'estensione navigatorContent e la destinazione del trascinamento dell'operazione è descritta dall'espressione possibleDropTargets dell'elemento dropAssistant.

Un'estensione può avere più adattatori di trascinamento con espressioni possibleDropTargets che si escludono a vicenda. Il primo adattatore di trascinamento rilevato che corrisponde alla destinazione di trascinamento indicata e che restituisce uno stato OK per CommonDropAdapterAssistant.validateDrop(...) potrà gestire il trascinamento.



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

Descrive le possibili destinazioni del trascinamento che un determinato dropAssistant può gestire.



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

Un elemento principale generico. L'elemento può essere utilizzato in un punto di estensione per definire la relativa espressione di attivazione. Gli elementi secondari di un'espressione di attivazione vengono associati utilizzando l'operatore and.



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

Questo elemento rappresenta un'operazione NOT sul risultato della valutazione della relativa espressione dell'elemento secondario.



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

Questo elemento rappresenta un'operazione AND sul risultato della valutazione di tutte le espressioni dei relativi elementi secondari.



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

Questo elemento rappresenta un'operazione OR sul risultato della valutazione di tutte le espressioni dei relativi elementi secondari.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Questo elemento viene utilizzato per eseguire un controllo instanceof dell'oggetto attivo. L'espressione restituisce EvaluationResult.TRUE se il tipo dell'oggetto è un tipo secondario del tipo specificato dal valore dell'attributo. In caso contrario, viene restituito EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Questo elemento viene utilizzato per valutare lo stato della proprietà dell'oggetto in questione. L'insieme di proprietà verificabili può essere esteso utilizzando il punto di estensione del tester delle proprietà. L'espressione di verifica restituisce EvaluationResult.NOT_LOADED se il tester delle proprietà non è ancora stato caricato.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Verifica una proprietà di sistema richiamando il metodo System.getProperty e confronta il risultato con il valore specificato dall'attributo del valore.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Questo elemento viene utilizzato per eseguire un controllo di eguaglianza dell'oggetto attivo. L'espressione restituisce EvaluationResult.TRUE se l'oggetto è uguale al valore fornito dal valore dell'attributo. In caso contrario, viene restituito EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Questo elemento viene utilizzato per verificare il numero di elementi in una raccolta.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Questo elemento modifica l'oggetto da esaminare per tutti i relativi elementi secondari indicati da una determinata variabile. Se non è possibile risolvere la variabile, l'espressione genera un ExpressionException durante la valutazione. Gli elementi secondari di una espressione WITH sono combinati con l'operatore AND.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Questo elemento modifica l'oggetto da esaminare per tutti i relativi elementi secondari indicati da una determinata variabile. Se non è possibile risolvere la variabile, l'espressione genera un ExpressionException durante la valutazione. Gli elementi secondari di una espressione WITH sono combinati con l'operatore AND.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Questo elemento viene utilizzato per adattare l'oggetto attivo al tipo specificato dal tipo di attributo. L'espressione restituisce non caricato se l'adattatore o il tipo indicato non è stato ancora caricato. Viene generata una ExpressionException durante la valutazione se il nome del tipo non esiste. Gli elementi secondari di una espressione di adattamento sono combinati con l'operatore AND.



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

<!ATTLIST iterate

operator (or|and) >

Questo elemento viene utilizzato per iterare una variabile di tipo java.util.Collection. Se l'oggetto attivo non è del tipo java.util.Collection viene generata una ExpressionException durante la valutazione dell'espressione.




Aggiunta del contenuto

Il seguente esempio descrive un'estensione di contenuto che fornisce contenuto alle risorse. L'espressione triggerPoints determina quando questa estensione viene richiamata per la prima volta. Se un viewerContentBinding corrisponde a questa estensione con l'attributo "isRoot" impostato su true, l'estensione verrà utilizzata a prescindere dalla corrispondenza dell'elemento principale con l'espressione 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>

Aggiunta di azioni

I client possono utilizzare i contributi di oggetti o visualizzatori (vedere org.eclipse.ui.popupMenus) per fornire azioni alle rispettive viste. A volte, i client richiedono un grado di flessibilità superiore che nessuno di questi approcci consente, e in questi casi il Common Navigator Framework supporta l'aggiunta di fornitori di azioni. "Action providers" ha la sottoclasse org.eclipse.ui.actions.ActionGroup e può riempire le barre di azioni e i menu in base a diversi eventi (selezione e clic con il tasto destro del mouse).

I client possono associare uno o più fornitori a una particolare estensione di contenuti o dichiarare i fornitori di azioni come contributi di livello superiore, non associati a nessuna estensione contenuti particolare. I fornitori delle azioni di livello superiore devono essere associati a una particolare istanza del visualizzatore, mediante il punto di estensione org.eclipse.ui.navigator.viewer/viewerActionBinding. I fornitori delle azioni nidificate vengono associati automaticamente a un visualizzatore se le rispettive estensioni di contenuto sono anch'esse associate al visualizzatore (vedere org.eclipse.ui.navigator/viewerContentBinding).

Il seguente esempio mostra entrambi gli approcci. "TestNestedActionProvider" potrà contribuire al menu e a org.eclipse.ui.IActionBars solo quando l'estensione "org.eclipse.ui.tests.navigator.testContent" è visibile e attivo. Se l'utente disattiva l'estensione di verifica nella finestra "Personalizzazioni disponibili", il fornitore di azioni nidificato non potrà più contribuire.

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

I client possono definire filtri mediante le sottoclassi di org.eclipse.jface.viewers.ViewerFilter o le espressioni principali di Eclipse. Il seguente esempio mostra le due tecniche. I client possono utilizzare solo una delle due opzioni. Le estensioni che specificano entrambe le tecniche genereranno un errore per cui verrà rispettato solo il filtro dell'espressione. Il nome e i campi delle descrizioni sono traducibili e dovrebbero esternalizzare le stringhe in ambienti reali.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"Hide TestItem objects that end in the number &quot;3&quot;"

id=

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

name=

"TestItems that end with &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Hides all instances of Test Item"

id=

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

name=

"A TestItem Exp Filter (should be sorted alphab..)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

Per un insieme di elementi secondari basati sul proprio elemento principale, viene determinata un'utilità di ordinamento comune. La classe sorter deve essere una sottoclasse di 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>

Il seguente esempio mostra come aggiungere azioni di accesso rapido alle procedure guidate per "New Folder" e "New File", abilitati nelle specifiche sottoclassi di org.eclipse.core.resources.IResource. I client possono utilizzare qualsiasi parte di org.eclipse.core.expressions necessarie per descrivere quando le opzioni del menu dovrebbero essere disponibili. Il wizardId specificato di seguito deve corrispondere a uno dei punti di estensione org.eclipse.ui.xxxWizards.

Per i client che generano i propri visualizzatori o parti di viste, assicurarsi di utilizzare org.eclipse.ui.navigator.WizardActionGroup per inserire correttamente i dati nel menu. Per ulteriori informazioni sull'uso di questa funzione, fare riferimento alla classe.


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