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.
org.eclipse.ui.navigator.CommonActionProvider
)org.eclipse.jface.viewers.ITreeContentProvider
o org.eclipse.ui.navigator.ICommonContentProvider
.
org.eclipse.jface.viewers.ILabelProvider
o, per funzionalità più avanzate, vedere org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
per aggiungere testo alla
barra di stato nella parte inferiore del workbench Eclipse, in base alla selezione nel visualizzatore.<!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.
org.eclipse.jface.viewers.ViewerSorter
.<!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.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!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.
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>
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 "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems that end with "3""
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>
Copyright (c) 2002, 2005 IBM Corporation e altri.
Tutti i diritti riservati. Questo programma e il materiale di accompagnamento sono
disponibili secondo i termini della Eclipse Public License v1.0 che sono distribuiti con il prodotto, e disponibili all'indirizzo
http://www.eclipse.org/legal/epl-v10.html