Výraz triggerPoints popisuje prvky, které způsobí, že bude toto rozšíření vyvoláno buďto pro podřízené prvky, nebo pro štítky. Výraz possibleChildren popisuje prvky, pro které může rozšíření poskytnout nadřízený prvek. Klienti by měli popsat všechny prvky, které by mohly být nastaveny jako výběr, aby odkaz s podporou editoru mohl být správně rozšířen do správného uzlu.
<!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>
Rozšíření obsahu navigátoru definuje poskytovatele obsahu a poskytovatele štítku, které lze použít pro poskytnutí podřízeného prvku, kdykoli prvek odpovídá výrazu triggerPoints, a také pro poskytnutí nadřízeného prvku, kdykoli prvek odpovídá výrazu possibleChildren.
Klient může volitelně poskytnout také poskytovatele akce, který může poskytnout příspěvky do nabídky a řádky s akcemi, je-li vybrán prvek, který byl rozšířením přidán nebo který odpovídá výrazu triggerPoints. Klienti se mohou také rozhodnout přidat třídění, které třídí prvky, jenž rozšíření přidalo.
org.eclipse.ui.navigator.CommonActionProvider
)org.eclipse.jface.viewers.ITreeContentProvider
nebo org.eclipse.ui.navigator.ICommonContentProvider
.
org.eclipse.jface.viewers.ILabelProvider
nebo pro rozšířenou funkčnost, org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
, aby přidali text do stavové lišty v dolní části pracovní plochy Eclipse na základě výběru v prohlížeči.<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Výraz zpřístupnění umožňuje klientům specifikovat stejný výraz pro triggerPoints i possibleChildren.
V případě actionProvider musejí klienti definovat výraz, který bude rámcovému systému indikovat, kdy by měl být vyvolán jejich org.eclipse.ui.navigator.CommonActionProvider
. Kvůli příspěvkům do IActionBars je třeba klienty vyvolat kdykoli, kdy je vybrán objekt, o nějž mají zájem. Proto mohou klienti použít vlastní uvážení při rozhodování, kdy by mělo být jejich rozšíření zpřístupněno.
<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Výraz triggerPoints definuje uzly ve stromě, které by měly způsobit vyvolání tohoto rozšíření pro podřízené prvky.
<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Výraz possibleChildren definuje uzly ve stromě, které by mohly dostat příspěvek od tohoto rozšířením. Klienti by měli popsat, kdy by mohlo toto rozšíření obsahu poskytnout nadřízený prvek pro prvky, které výrazu odpovídají.
<!ELEMENT actionProvider (enablement?)>
<!ATTLIST actionProvider
class CDATA #REQUIRED
id CDATA #IMPLIED
dependsOn CDATA #IMPLIED
overrides CDATA #IMPLIED>
Poskytuje název třídy, která implementuje org.eclipse.ui.navigator.CommonActionProvider
. Poskytovatel akce má příležitost přispět ke kontextové nabídce a k přecílitelným akcím definovaným v IActionBars pro pohled, který navigátor obsahuje. Klienti mohou také přispívat přímo do nabídky zobrazení prostřednictvím nabídky zobrazení IActionBars.
actionProvider nejvyšší úrovně je viditelný pro abstraktní prohlížeč, pokud existuje viewerActionBinding pro tohoto actionProvider. Pro poskytovatele actionProviders, kteří jsou vnořeni pod prvek navigatorContent, bude viditelnost řízena pomocí ID rozšíření navigatorContent. Podřízení poskytovatelé akcí budou automaticky vybráni pomocí shody s viewerContentBinding. Viz org.eclipse.ui.navigator.viewer ohledně dalších informací o vazbách viditelnosti.
Klienti mohou poskytovat actionProvider pod kořenovým prvkem rozšíření (rovnocenný jinémunavigatorContent) pro lepší kontrolu jejich zpřístupnění a vazeb prohlížeče (viz veiwerActionBinding).
Pro kořenový actionProviders, který nemá žádné ID, je výchozí ID "org.eclipse.ui.navigator.actionProvider.X". Pro ty poskytovatele actionProvider, kterým má být poskytnuta možnost přispět nabídkami nebo akčními řádky prohlížeče, musí být definována viewerActionBinding (jako součást bodu rozšíření org.eclipse.ui.navigator.viewer), která deklaruje vazbu mezi konkrétním prohlížečem a výchozím ID ("org.eclipse.ui.navigator.actionProvider.*"). Další informace viz dokumentace pro viewerActionBinding pod dokumentací schématu org.eclipse.ui.navigator.viewer.
<!ELEMENT commonWizard (enablement)>
<!ATTLIST commonWizard
type (import|export|new)
wizardId CDATA #REQUIRED
menuGroupId CDATA #IMPLIED
associatedExtensionId CDATA #IMPLIED>
Bod rozšíření poskytuje schopnost přispívat k nabídce definované typem.
<!ELEMENT commonFilter (filterExpression?)>
<!ATTLIST commonFilter
id CDATA #REQUIRED
name CDATA #REQUIRED
description CDATA #IMPLIED
class CDATA #IMPLIED
activeByDefault (true | false) >
Definuje filtr, který může být asociován s konkrétním běžným prohlížečem. Běžné filtry jsou vázány k prohlížeči jako rozšíření obsahu pomocí org.eclipse.ui.navigator.viewer/viewerContentBinding.
<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Volitelný výraz Eclipse Core Expression, který definuje, co by měl filtr skrýt před konkrétním pohledem.
Klienti se mohou například rozhodnout skrýt všechny prostředky, které mají konkrétní vzor ve svém názvu (jako např. "*.acme"). Když je filtr aktivní (zapnut ve výchozím nastavení nebo zapnut uživatelem), potom budou před pohledem uživatele skryty všechny prostředky, které končí na "acme".
Klienti mohou použít buďto filterExpression, nebo atribut "class", ale nikoli oba.
<!ELEMENT commonSorter (parentExpression)>
<!ATTLIST commonSorter
id CDATA #REQUIRED
class CDATA #REQUIRED>
commonSorter deklaruje podtřídu org.eclipse.jface.viewers.ViewerSorter
, která se používá k seřazení podřízených prvků ve stromě. Vnořený parentExpression popisuje, kdy by měl být použitý commonSorter. Pokud prvek odpovídá parentExpression, potom budou jeho podřízené prvky seřazeny pomocí tohoto commonSorter.
org.eclipse.jface.viewers.ViewerSorter
.<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
parentExpression používá commonSorter pro identifikaci, je-li to zapotřebí. Pokud parentExpression pro commonSorter odpovídá danému prvku, potom se commonSorter použije k třídění podřízených prvků tohoto prvku (vrácených poskytovatelem obsahu ve službě obsahu).
<!ELEMENT override EMPTY>
<!ATTLIST override
suppressedExtensionId CDATA #REQUIRED
policy (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">
Když je výraz triggerPoints pro potlačené rozšíření i pro deklarované rozšíření zpřístupněn na daném prvku, toto rozšíření bude vyvoláno, ale jeho potlačené rozšíření nikoli. Klienti, kteří specifikují prvek override, musejí také poskytnout poskytovatele obsahu, který implementuje org.eclipse.ui.navigator.IPipelinedTreeContentProvider
, který poskytuje metody pro zachycení žádostí pro podřízené prvky, nadřízené prvky a přímé aktualizace prohlížeče.
<!ELEMENT dropAssistant (possibleDropTargets)>
<!ATTLIST dropAssistant
id CDATA #REQUIRED
class CDATA #REQUIRED>
Poskytuje podtřídu org.eclipse.ui.navigator.CommonDropAdapterAssistant
, který může poskytnout programové ověření pro operaci umístění, požadovat další typy přenosů a ošetřovat operace umístění.
dropAssistant bude vyvolán vždy, když přetažené prvky odpovídají výrazu possibleChildren rozšíření navigatorContent, které jej obsahuje, a cíl umístění operace je popsán výrazem possibleDropTargets prvku dropAssistant.
Rozšíření může mít víc adaptérů umístění se vzájemně se vylučujícími výrazy possibleDropTargets. Prvnímu nalezenému adaptéru umístění, který odpovídá danému cíli umístění a vrátí stav OK pro CommonDropAdapterAssistant.validateDrop(...)
bude poskytnuta příležitost umístění ošetřit.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Popište možné cíle umístění, které může zpracovat konkrétní dropAssistant.
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Generický kořenový prvek. Tento prvek je možné použít uvnitř bodu rozšíření pro definování jeho výrazu typu enablement. Podřízené prvky výrazu enablement se kombinují pomocí operátoru and.
<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>
Tento prvek představuje operaci NOT nad výsledkem vyhodnocení výrazů svých dílčích prvků.
<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Tento prvek představuje operaci AND nad výsledkem vyhodnocení výrazů všech svých dílčích prvků.
<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Tento prvek představuje operaci OR nad výsledkem vyhodnocení výrazů všech svých dílčích prvků.
<!ELEMENT instanceof EMPTY>
<!ATTLIST instanceof
value CDATA #REQUIRED>
Tento prvek se používá k provádění kontroly typu instanceof nad objektem, na němž je fokus. Tento výraz vrací EvaluationResult.TRUE, pokud je typ daného objektu podtypem typu určeného hodnotou atributu. Jinak je vráceno EvaluationResult.FALSE.
<!ELEMENT test EMPTY>
<!ATTLIST test
property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED>
Tento prvek se používá k vyhodnocení stavu vlastnosti objektu, na němž je fokus. Množinu testovatelných vlastností je možné rozšířit pomocí bodu rozšíření testeru vlastností. Pokud tester vlastností, který provádí skutečné testování, dosud není načten, vrací testovací výraz EvaluationResult.NOT_LOADED.
<!ELEMENT systemTest EMPTY>
<!ATTLIST systemTest
property CDATA #REQUIRED
value CDATA #REQUIRED>
Testuje vlastnost systému voláním metody System.getProperty a porovnává výsledek s hodnotou stanovenou pomocí atributu value.
<!ELEMENT equals EMPTY>
<!ATTLIST equals
value CDATA #REQUIRED>
Tento prvek se používá k provádění kontroly typu equals nad objektem, na němž je fokus. Pokud se objekt rovná hodnotě dodané atributem value, vrací tento výraz EvaluationResult.TRUE. Jinak je vráceno EvaluationResult.FALSE.
<!ELEMENT count EMPTY>
<!ATTLIST count
value CDATA #REQUIRED>
Tento prvek se používá k testování počtu prvků v kolekci.
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST with
variable CDATA #REQUIRED>
Tento prvek mění pro všechny své podřízené prvky objekt, který má být kontrolován, na objekt uvedený v atributu variable. Pokud tuto proměnnou nelze vyřešit, způsobí výraz při jejím vyhodnocování ExpressionException. Podřízené prvky výrazu with se kombinují pomocí operátoru and.
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST resolve
variable CDATA #REQUIRED
args CDATA #IMPLIED>
Tento prvek mění pro všechny své podřízené prvky objekt, který má být kontrolován, na objekt uvedený v atributu variable. Pokud tuto proměnnou nelze vyřešit, způsobí výraz při jejím vyhodnocování ExpressionException. Podřízené prvky výrazu with se kombinují pomocí operátoru and.
<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST adapt
type CDATA #REQUIRED>
Tento prvek se používá k úpravě objektu, na němž je fokus, na typ určený atributem type. Pokud adaptér nebo typ, na který se odkazuje, ještě není načten, vrací tento výraz "not loaded". Pokud daný název typu vůbec neexistuje, způsobí při vyhodnocování výjimku ExpressionException. Podřízené prvky výrazu adapt se kombinují pomocí operátoru and.
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST iterate
operator (or|and) >
Tento prvek se používá k opakování nad proměnnou typu java.util.Collection. Pokud objekt, na němž je fokus, není typu java.util.Collection, způsobí při vyhodnocování výrazu výjimku ExpressionException.
Následující příkaz popisuje rozšíření obsahu, který popisuje obsah prostředku. Výraz triggerPoints určuje, kdy je toto rozšíření na počátku vyvoláno. Pokud viewerContentBinding odpovídá tomuto rozšíření s atributem "isRoot" nastaveným na true, pak rozšíření bude použito bez ohledu na to, zda kořenový prvek odpovídá výrazu 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>
Klienti mohou použít objekt nebo příspěvky prohlížeče (viz org.eclipse.ui.popupMenus), aby poskytli akce pro svůj pohled. Někdy klienti vyžadují větší míru flexibility, než každý z těchto přístupů umožňuje, a proto rámcový systém Common Navigator podporuje přidávání poskytovatele akcí. "Poskytovatelé akcí" jsou podtřídou org.eclipse.ui.actions.ActionGroup
a mají příležitosti plnit řádky s akcemi a nabídky založené na různých událostech (výběr resp. klepnutí pravého tlačítka myši).
Klienti mohou buďto asociovat jednoho či více poskytovatelů akcí s určitým rozšířením obsahu, nebo deklarovat poskytovatele akcí jako příspěvky nejvyšší úrovně, neasociované s žádným rozšířením obsahu. Poskytovatelé akcí nejvyšší úrovně musejí být asociováni s konkrétní instancí prohlížeče pomocí bodu rozšíření org.eclipse.ui.navigator.viewer/viewerActionBinding. Vnoření poskytovatelé akcí jsou automaticky vázání k prohlížeči na základě toho, zda je jejich obsahující rozšíření obsahu také vázáno k prohlížeči (viz org.eclipse.ui.navigator/viewerContentBinding).
Následující příklad demonstruje oba přístupy. Poskytovateli "TestNestedActionProvider" bude dána příležitost přispět k nabídce a k org.eclipse.ui.IActionBars
pouze tehdy, když je rozšíření "org.eclipse.ui.tests.navigator.testContent" viditelné a aktivní.
Pokud uživatel deaktivuje testovací rozšíření z dialogového okna "Dostupná vlastní nastavení", pak vnořenému poskytovateli akcí již nebude dána příležitost přispívat.
<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>
Klienti mohou definovat filtry buďto pomocí podtřídy org.eclipse.jface.viewers.ViewerFilter
, nebo
prostřednictvím výrazů jádra Eclipse. Následující příklad demonstruje obě techniky. Klienti mohou použít pouze jednu z obou možností. Rozšíření, která specifikují chybně obě, povedou pouze k tomu, že bude respektován filtr výrazu jádra. Pole název a popis jsou přeložitelné a měly by externalizovat řetězce v reálných prostředích.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonFilter class=
"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"
description=
"Skryjte objekty TestItem, které končí číslem "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems, které končí na "3""
activeByDefault=
"true"
/>
<commonFilter description=
"Skryje všechny instance testovací položky Test Item"
id=
"org.eclipse.ui.tests.navigator.filters.AllTestItems"
name=
"Filtr TestItem Exp Filter (měl by být seřazen abecedně..)"
>
<filterExpression>
<instanceof value=
"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"
/>
</filterExpression>
</commonFilter>
Společné seřazení je stanoveno pro množinu podřízených prvků na základě jejich nadřízených prvků. Třída seřazení musí být podtřídou 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>
Následující příklad demonstruje, jak přidat akce zástupce průvodce pro "Novou složku" a "Nový soubor", které jsou zpřístupněny v konkrétních podtřídách org.eclipse.core.resources.IResource. Klienti mohou použít libovolné části org.eclipse.core.expressions, které jsou potřebné k popisu toho, kdy by měly být volby nabídky k dispozici. Níže specifikované ID průvodce wizardId musí odpovídat jednomu z bodů rozšíření org.eclipse.ui.xxxWizards.
Klienti budující své vlastní prohlížeče nebo části pohledů, dbejte na to, abyste použili org.eclipse.ui.navigator.WizardActionGroup
pro správné naplnění nabídky. Další dokumentace o použití této funkce viz tato třída.
<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 a další.
Všechna práva vyhrazena.
Tento program a doprovodné materiály jsou zpřístupněny za podmínek licence Eclipse Public License
v1.0, která je součástí této distribuce a je k dispozici na adrese
http://www.eclipse.org/legal/epl-v10.html