navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

A tartalomkiterjesztés egy tartalom- és címkeszolgáltatót biztosít, amelyeket a navigátor tartalomszolgáltatása használhat. A navigatorContent kiterjesztés meghatározza a specifikus osztályokat a tartalom-, a címke- és a tevékenységszolgáltató számára azon elemtípusok kiegészítéseként, amelyekről a kiterjesztés tud.

A triggerPoints kifejezés azon elemeket írja le, amelyek hatására a kiterjesztés meghívásra kerül a leszármazottakhoz vagy címkékhez. A possibleChildren kifejezés azon elemeket írja le, amelyekhez a kiterjesztés szülőt tud biztosítani. Az ügyfeleknek le kell írniuk a kijelölésként beállítható összes elemet annak biztosítása érdekében, hogy a szerkesztőtámogatással rendelkező hivatkozás megfelelően kibontható legyen a helyes csomóponton.

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

A navigátortartalom kiterjesztés meghatároz egy tartalom- és címkeszolgáltatót, amelyek leszármazottak biztosítására használhatók, ha egy elem megfelel a triggerPoints kifejezésnek és szülő biztosítására, ha egy elem megfelel a possibleChildren kifejezésnek.

Az ügyfelek biztosíthatnak egy tevékenységszolgáltatót, amely menükiegészítéseket és műveletsor-kiegészítéseket biztosíthat a kiterjesztés által hozzáadott vagy a triggerPoints kifejezésnek megfelelő elem kijelölése esetén. Az ügyfelek közreadhatnak egy rendezőt, amely a kiterjesztés által hozzáadott elemeket rendezi.



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

A felkészítési kifejezés lehetővé teszi az ügyfelek számára ugyanazon kifejezés megadását a triggerPoints és possibleChildren elemhez egyaránt.

actionProvider esetén az ügyfeleknek meg kell határozniuk egy kifejezést, amely jelzi a keretrendszernek, ha meg kell hívni az org.eclipse.ui.navigator.CommonActionProvider elemet. Az IActionBar elemekben való közreműködésük miatt az ügyfeleket meg kell hívni, ha egy számukra érdekes objektum kerül kijelölésre. Emiatt az ügyfeleknek körültekintően kell eljárniuk annak eldöntésekor, hogy kiterjesztéseiket mikor kell engedélyezni.



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

A triggerPoints kifejezés egy fa azon csomópontjait határozza meg, amelyek hatására a kiterjesztés meghívásra kerül a leszármazotthoz.



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

A possibleChildren kifejezés egy fa azon csomópontjait határozza meg, amelyek a kiterjesztés által kiegészíthetők. Az ügyfeleknek le kell írniuk, hogy ez a tartalomkiterjesztés mikor biztosíthat szülőt a kifejezésnek megfelelő elemeknek.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Megadja az org.eclipse.ui.navigator elemet megvalósító osztály nevét. A tevékenységszolgáltató kiegészítheti a navigátort tartalmazó nézet IActionBar elemeiben meghatározott előugró menüt és áttervezhető tevékenységeket. Az ügyfelek közvetlenül is kiegészíthetik a nézet menüt az IActionBar nézet menüjén keresztül.

Egy felső szintű actionProvider látható egy absztrakt megjelenítő számára, ha létezik egy viewerActionBinding az adott actionProvider elemhez. Egy navigatorContent elem alá beágyazott actionProvider elemek esetén a láthatóságot a navigatorContent kiterjesztésazonosító azonosítója vezérli. A leszármazott tevékenységszolgáltatók automatikusan kiválasztásra kerülnek a viewerContentBinding elemeknek megfeleltetés alapján. A láthatósági kötésekkel kapcsolatos további információkat az org.eclipse.ui.navigator.viewer rész tartalmaz.

Az ügyfelek actionProvider elemeket biztosíthatnak a gyökér extention elem alatt (egy másik navigatorContent partnereként) a felkészítési és megjelenítő kötéseik jobb vezérelhetősége érdekében (Lásd: veiwerActionBinding).

Azonosító nélküli gyökér actionProviders esetén az azonosító alapértelmezett értéke "org.eclipse.ui.navigator.actionProvider.X". Annak biztosítása érdekében, hogy ezen actionProvider elemek a megjelenítő menüit vagy műveletsorait kiegészíthessék, meg kell határozni egy viewerActionBinding elemet (az org.eclipse.ui.navigator.viewer kiterjesztési pont részeként), amely megad egy kötést az adott megjelenítő és az alapértelmezett azonosító között ("org.eclipse.ui.navigator.actionProvider.*"). További információkért tekintse meg a viewerActionBinding dokumentációját az org.eclipse.ui.navigator.viewer sémadokumentációja alatt.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

A kiterjesztési pont lehetővé teszi a meghatározott menü kiegészítését típus szerint.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Egy szűrőt határoz meg, amely egy adott általános megjelenítőhöz társítható. Az általános szűrők egy megjelenítőhöz vannak kötve, a tartalomkiterjesztésekhez hasonlóan az org.eclipse.ui.navigator.viewer/viewerContentBinding segítségével.



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

Egy elhagyható Eclipse alapkifejezés, amely meghatározza, hogy a szűrőnek mit kell elrejtenie egy adott nézet elől.

Az ügyfelek például dönthetnek úgy, hogy elrejtik névben egy adott mintát tartalmazó erőforrásokat (például: "*.acme"). Ha a szűrő aktív (alapértelmezésben be van kapcsolva, vagy a felhasználó bekapcsolta), akkor az összes "acme" végződésű erőforrás rejtett lesz a felhasználó nézetében.

Az ügyfelek használhatják a filterExpression vagy a "class" attribútumot, de egyszerre mindkettőt nem.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Egy commonSorter meghatározza egy org.eclipse.jface.viewers.ViewerSorter alosztályát, amely a leszármazottakat rendezi a fában. A beágyazott parentExpression leírja, hogy a commonSorter elemet mikor kell használni. Ha egy elem megfelel a parentExpression kifejezésnek, akkor leszármazottait a commonSorter rendezi.



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

A commonSorter a parentExpression segítségével azonosítja, hogy mikor alkalmazható. Ha egy commonSorter parentExpression kifejezése megfelel egy adott elemnek, akkor ez a commonSorter kerül felhasználásra az elem leszármazottainak rendezésére (a tartalomszolgáltatás tartalomszolgáltatója által visszaadott módon).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Ha az elnyomott kiterjesztés triggerPoints kifejezése, és a deklarált kiterjesztés egyaránt engedélyezett egy adott elemen, akkor ez a kiterjesztés kerül meghívásra, nem pedig az elnyomott kiterjesztése. override elemet megadó ügyfeleknek meg kell adniuk egy tartalomszolgáltatót, amely megvalósítja a megjelenítő számára leszármazottak és szülők kéréseinek elfogásához és a közvetlen frissítésekhez metódusokat biztosító org.eclipse.ui.navigator.IPipelinedTreeContentProvider felületet.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Az org.eclipse.ui.navigator.CommonDropAdapterAssistant egy alosztályát biztosítja, amely egy húzás művelet szoftveres ellenőrzését biztosíthatja, további átviteli típusokat kérhet és kezelheti a húzás műveletet.

Egy dropAssistant kerül meghívásra, ha a húzott elemek megfelelnek a tartalmazó navigatorContent kiterjesztés possibleChildren kifejezésének és a művelet ejtési célját a dropAssistant elem possibleDropTargets kifejezése írja le.

Egy kiterjesztésnek több, kölcsönösen kizáró possibleDropTargets kifejezésesel rendelkező ejtésillesztője lehet. Az adott ejtési célnak megfelelő első ejtésillesztő, amely egy OK állapotkódot ad vissza a CommonDropAdapterAssistant.validateDrop(...) hatására, lehetőséget kap az ejtés kezelésére.



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

Egy adott dropAssistant által kezelhető lehetséges ejtési célokat írja le.



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

Általános gyökérelem. Az elem kiterjesztési pontokon belül használható a hozzá tartozó enablement kifejezés meghatározására. Az enablement kifejezések leszármazottai az and operátorral kombinálhatók.



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

Ez az elem egy NOT műveletet képvisel a részelemeként kiértékelt kifejezés eredményén.



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

Ez az elem egy AND műveletet képvisel a részelemeként kiértékelt összes kifejezés eredményén.



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

Ez az elem egy OR műveletet képvisel a részelemeként kiértékelt összes kifejezés eredményén.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Ezzel az elemmel végezhető el a fókuszban lévő objektum instanceof ellenőrzése. A kifejezés az EvaluationResult.TRUE értékkel tér vissza, ha az objektum típusa a value attribútumban megadott típus altípusa. Ellenkező esetben EvaluationResult.FALSE kerül visszaadásra.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Ezzel az elemmel értékelhető ki a fókuszban lévő objektum tulajdonságának állapota. A tesztelhető tulajdonságok halmaza a tulajdonságtesztelő kiterjesztési ponton terjeszthető ki. A tesztelési kifejezés EvaluationResult.NOT_LOADED értéket ad vissza, ha a tényleges tesztelést végző tulajdonságtesztelő még nincs betöltve.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Megvizsgál egy rendszertulajdonságot a System.getProperty metódus meghívásával, és összehasonlítja az eredményt a value attribútumban megadott értékkel.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Ezzel az elemmel végezhető el a fókuszban lévő objektum egyenlőségi ellenőrzése. A kifejezés az EvaluationResult.TRUE értékkel tér vissza, ha az objektum egyenlő a value attribútumban megadott értékkel. Ellenkező esetben EvaluationResult.FALSE kerül visszaadásra.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Ezzel az elemmel vizsgálható megy egy kollekció elemszáma.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Az elem módosítja a leszármazott elemek tekintetében megvizsgálandó objektumot az adott változó által hivatkozott objektumra. Ha a változó nem oldható fel, akkor a kifejezés a kiértékelés során ExpressionException kivételt ad. A with kifejezések leszármazottai az and operátorral kombinálhatók.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Az elem módosítja a leszármazott elemek tekintetében megvizsgálandó objektumot az adott változó által hivatkozott objektumra. Ha a változó nem oldható fel, akkor a kifejezés a kiértékelés során ExpressionException kivételt ad. A with kifejezések leszármazottai az and operátorral kombinálhatók.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Ezzel az elemmel adaptálható a fókuszban lévő objektum a type attribútummal megadott típusra. A kifejezés "nincs betöltve" értéket ad vissza, ha a hivatkozott adapter vagy típus még nincs betöltve. ExpressionException kivételt ad a kiértékelés során, ha a típus neve egyáltalán nem létezik. Az adapt kifejezések leszármazottai az and operátorral kombinálhatók.



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

<!ATTLIST iterate

operator (or|and) >

Ezzel az elemmel iterálhatók a java.util.Collection típusú változók. Ha a fókuszban lévő objektum nem java.util.Collection típusú, akkor a kifejezés kiértékelése ExpressionException kivételt ad.




Tartalom hozzáadása

A következő példa egy erőforrástartalmat biztosító tartalomkiterjesztést ír le. A triggerPoints kifejezés meghatározza, hogy a kiterjesztés kezdetben meghívásra kerül-e. Ha egy viewerContentBinding illeszkedik erre a kiterjesztésre és az "isRoot" attribútum igaz értékre van állítva, akkor a kiterjesztés felhasználásra kerül, függetlenül attól, hogy a gyökérelem megfelel-e a triggerPoints kifejezésnek.

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

Tevékenységek hozzáadása

Az ügyfelek objektum- vagy megjelenítőkiegészítéseket használhatnak (Lásd: org.eclipse.ui.popupMenus) tevékenységek biztosítása érdekében a nézetük számára. Néha az ügyfelek nagyobb mértékű rugalmasságot igényelnek, mint amelyet a megközelítések lehetővé tesznek, emiatt az Általános navigátor keretrendszer támogatja tevékenységszolgáltatók hozzáadását. A "tevékenységszolgáltatók" továbbszármaztatják az org.eclipse.ui.actions.ActionGroup felületet és lehetőségük van kitölteni a műveletsorokat és menüket a különböző események alapján (kijelölés és kattintás a jobb egérgombbal, értelemszerűen).

Az ügyfelek társíthatnak néhány tevékenységszolgáltatót egy adott tartalomkiterjesztéshez, vagy deklarálhatják a tevékenységszolgáltatókat felső szintű kiegészítésekként, nem társítva azokat egyetlen adott tartalomkiterjesztéshez sem. A felső szintű tevékenységszolgáltatókat a megjelenítő egy adott példányához kell társítani az org.eclipse.ui.navigator.viewer/viewerActionBinding kiterjesztési pont segítségével. A beágyazott tevékenységszolgáltatók automatikusan egy megjelenítőhöz lesznek kötve annak alapján, ahogy a tartalmazó tartalomkiterjesztés szintén a megjelenítőhöz van kötve (Lásd: org.eclipse.ui.navigator/viewerContentBinding).

Az alábbi példa mindkét megközelítést bemutatja. A "TestNestedActionProvider" csak akkor kap lehetőséget a menü és az org.eclipse.ui.IActionBars kiegészítésére, ha az "org.eclipse.ui.tests.navigator.testContent" kiterjesztés látható és aktív. Ha a felhasználó leállítja a tesztkiterjesztést az "Elérhető személyre szabások" párbeszédablakban, akkor a beágyazott tevékenységszolgáltató már nem végezhet kiegészítést.

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

Az ügyfelek szűrőket határozhatnak az org.eclipse.jface.viewers.ViewerFilter alosztályainak vagy Eclipse alapkifejezés segítségével. Az alábbi példa mindkét eljárást bemutatja. Az ügyfelek csak a két lehetőség egyikét használhatják. A mindkettőt hibásan megadó kifejezések azt eredményezik, hogy csak a központi kifejezésszűrő lesz figyelembe véve. A név és leírás mezők lefordíthatók és külsőleg elérhetővé kell tenni őket a valós környezetekben.

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

Az általános rendező leszármazottak egy halmazához kerül meghatározásra a szülő alapján. A rendező osztálynak az org.eclipse.jface.viewers.ViewerSorter alosztályának kell lennie.


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

Az alábbi példa varázsló-parancsikon tevékenységek "Új mappa" és "Új fájl" elemekhez adását mutatja be, amelyek az org.eclipse.core.resources.IResource adott alosztályain engedélyezettek. Az ügyfelek az org.eclipse.core.expressions tetszőleges részeit használhatják, amelyek szükségesek a menüpontok elérhetővé válásának leírásához. Az alább megadott wizardId elemnek az org.eclipse.ui.xxxWizards kiterjesztési pontjának kell lennie.

A saját megjelenítőjüket vagy nézetrészeiket összeépítő ügyfelek esetén a menü helyes feltöltéséhez az org.eclipse.ui.navigator.WizardActionGroup osztályt kell használni. A szolgáltatás használatával kapcsolatos további dokumentációkért tekintse meg az osztályt.


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