navigatorContent
służy do definiowania określonych klas związanych z dostawcą treści, dostawcą etykiet i dostawcą akcji, a także typów elementów dostępnych dla rozszerzenia.
Wyrażenie triggerPoints
służy do opisywania elementów, które powodują wywołanie rozszerzenia w odniesieniu do elementów potomnych lub etykiet. Wyrażenie possibleChildren
służy do opisywania elementów, w odniesieniu do których rozszerzenie umożliwia udostępnianie elementów nadrzędnych. Na poziomie klientów należy opisać wszystkie dostępne do ustawiania elementy, co umożliwia prawidłowe rozwijanie odpowiedniego węzła za pośrednictwem powiązania z edytorem.
<!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>
Rozszerzenie treści Nawigatora pozwala zdefiniować dostawcę treści i dostawcę etykiet, za pomocą których można udostępniać elementy potomne (jeśli dany element odpowiada wyrażeniu triggerPoints
), a także udostępniać element nadrzędny (jeśli dany element odpowiada wyrażeniu possibleChildren
).
Opcjonalnie klienty mogą także udostępniać dostawcę akcji, który umożliwia korzystanie z elementów wnoszonych przez kontrybutora do menu i do paska działań w przypadku wybrania elementu wniesionego przez rozszerzenie lub odpowiadającego wyrażeniu triggerPoints
. Ponadto klienty mogą wnosić sorter służący do sortowania elementów wnoszonych za pomocą rozszerzenia.
org.eclipse.ui.navigator.CommonActionProvider
).normal
.org.eclipse.jface.viewers.ITreeContentProvider
lub org.eclipse.ui.navigator.ICommonContentProvider
.
enablement
lub triggerPoints
pozwala wskazać, w przypadku jakich rodzajów treści ma być wysyłane żądanie do dostawcy treści.
commonSorter
), aby zapewnić właściwą kolejność elementów.org.eclipse.ui.navigator.viewer/viewerContentBinding
.false
. W przypadku wartości true
dostawca treści musi dostosować się do ustawień parametru SaveablesProvider
.org.eclipse.jface.viewers.ILabelProvider
, a w przypadku bardziej zaawansowanej funkcjonalności, interfejs org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
, aby umieścić tekst na pasku statusu znajdującym się w dolnej części środowiska roboczego Eclipse (na podstawie wyboru w przeglądarce).<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Przedstawione wyrażenie włączające umożliwia klientom określenie tej samej wartości wyrażeń triggerPoints
i possibleChildren
.
W przypadku interfejsu actionProvider
klienty muszą definiować wyrażenie wskazujące, kiedy w ramach środowiska ma być wywołana klasa org.eclipse.ui.navigator.CommonActionProvider
. Ze względu na elementy wnoszone do interfejsu IActionBars
klienty muszą być wywoływane za każdym razem, gdy zostanie wybrany interesujący je obiekt. W związku z tym zaleca się dokładne rozważenie, kiedy należy włączać rozszerzenia klientów.
<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Wyrażenie triggerPoints
służy do definiowania węzłów w ramach drzewa, które powinny powodować wywołanie rozszerzenia na potrzeby elementów potomnych.
<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Wyrażenie possibleChildren
służy do definiowania węzłów w ramach drzewa, które powinny być wnoszone za pomocą danego rozszerzenia. Klienty powinny opisywać, kiedy dane rozszerzenie powinno udostępniać element nadrzędny w odniesieniu do elementów odpowiadających wyrażeniu.
<!ELEMENT actionProvider (enablement?)>
<!ATTLIST actionProvider
class CDATA #REQUIRED
id CDATA #IMPLIED
dependsOn CDATA #IMPLIED
overrides CDATA #IMPLIED>
Element ten udostępnia nazwę klasy, za pomocą której implementowana jest klasa org.eclipse.ui.navigator.CommonActionProvider
. Dostawca akcji może wnieść pozycje menu kontekstowego i akcje o zmiennym celu zdefiniowane w ramach interfejsu IActionBars
w odniesieniu do widoku, w którym znajduje się Nawigator. Klienty mogą także wnosić elementy bezpośrednio do menu widoku za pośrednictwem menu widoku interfejsu IActionBars
.
Interfejs actionProvider
najwyższego poziomu jest widoczny z przeglądarki danych abstrakcyjnych, jeśli w odniesieniu do tego interfejsu występuje atrybut viewerActionBinding
. W przypadku interfejsów actionProvider
zagnieżdżonych w ramach elementu navigatorContent
widoczność zależy od identyfikatora rozszerzenia navigatorContent
. Wybór potomnych dostawców akcji odbywa się automatycznie na podstawie dopasowania atrybutów viewerContentBinding
. Więcej informacji na temat powiązań dotyczących widoczności zawiera opis rozszerzenia org.eclipse.ui.navigator.viewer
.
Klienty mogą udostępniać interfejs actionProvider
w ramach głównego elementu extension
(równorzędnego wobec innych elementów navigatorContent
), aby uzyskać większą kontrolę nad włączaniem i tworzeniem powiązań z przeglądarką (patrz element viewerActionBinding
).
W przypadku głównych interfejsów actionProvider
bez identyfikatora przyjmuje się identyfikator domyślny w postaci org.eclipse.ui.navigator.actionProvider.X
. Aby te interfejsy actionProvider
mogły wnosić paski menu lub paski działań przeglądarki, należy zdefiniować element viewerActionBinding
(w ramach punktu rozszerzenia org.eclipse.ui.navigator.viewer
), który zawiera deklarację powiązania między określoną przeglądarką a domyślnym identyfikatorem (org.eclipse.ui.navigator.actionProvider.*
). Więcej informacji na ten temat zawiera dokumentacja elementu viewerActionBinding
w opisie punktu rozszerzenia org.eclipse.ui.navigator.viewer
.
viewerContentBinding
).actionProvider
zdefiniowany przez wcześniejszego kontrybutora, który musi zostać przesłonięty. Wcześniejszy interfejs actionProvider
nie może wnosić opcji menu lub akcji o zmiennym celu, jeśli interfejs actionProvider
jest widoczny i włączony.<!ELEMENT commonWizard (enablement)>
<!ATTLIST commonWizard
type (import|export|new)
wizardId CDATA #REQUIRED
menuGroupId CDATA #IMPLIED
associatedExtensionId CDATA #IMPLIED>
Przedstawiony punkt rozszerzenia umożliwia wnoszenie elementów do menu zdefiniowanego według typu.
import
w przypadku punktu rozszerzenia org.eclipse.ui.importWizards
, export
w przypadku punktu rozszerzenia org.eclipse.ui.exportWizards
i new
w przypadku punktu rozszerzenia org.eclipse.ui.newWizards
.org.eclipse.ui.importWizards
, org.eclipse.ui.exportWizards
lub org.eclipse.ui.newWizards
.commonWizard
ze zgodnymi atrybutami menuGroupId
są wskazywane jako elementy pokrewne, jeśli są wyświetlane jako opcje menu dostępne dla użytkowników. Nie ma gwarancji co do sposobu grupowania. W szczególności klienty nie powinny w żadnym razie oczekiwać występowania w menu separatora lub znacznika grupy o podanej nazwie.commonWizard
można zdefiniować jako zagnieżdżony element potomny punktu rozszerzenia navigatorContent
. W takim przypadku atrybut associatedExtensionId
automatycznie przybiera wartość odpowiadającą identyfikatorowi zawierającego go elementu navigatorContent
. Jeśli jednak zostanie on określony jako rozszerzenie najwyższego poziomu, rozszerzenie commonWizard
może wskazywać na rozszerzenie treści, z którym powinien zostać jawnie powiązany. Jeśli rozszerzenie commonWizard
jest powiązane z rozszerzeniem treści, dziedziczy ono atrybuty widoczności (visibility
) i aktywacji activation
tego rozszerzenia.
org.eclipse.ui.navigator.viewer/viewerContentBinding
), rozszerzenie treści użytkownika jest aktywowane (activated
) domyślnie lub za pomocą okna dialogowego Dostępne rozszerzenia, wyświetlana jest opcja menu commonWizard. Jeśli jednak użytkownik deaktywuje rozszerzenie treści, opcja commonWizard nie jest dostępna w menu.
<!ELEMENT commonFilter (filterExpression?)>
<!ATTLIST commonFilter
id CDATA #REQUIRED
name CDATA #REQUIRED
description CDATA #IMPLIED
class CDATA #IMPLIED
activeByDefault (true | false) >
Element ten służy do definiowania filtru, który może zostać powiązany z daną wspólną przeglądarką. Powiązania między wspólnymi filtrami a przeglądarką tworzy się w taki sam sposób, jak w przypadku rozszerzeń treści, tj. za pomocą punktu rozszerzenia org.eclipse.ui.navigator.viewer/viewerContentBinding
.
filterExpression
. Identyfikator jest wykorzystywany przez punkt rozszerzenia org.eclipse.ui.navigator.viewer/viewerContentBinding
do tworzenia powiązania między filtrem a odpowiadającą mu przeglądarką.ViewerFilter
. Innym wariantem jest zagnieżdżenie elementu filterExpression
zawierającego opis obiektów, które mają być ukrywane za pomocą filtru. Klienty mogą korzystać z klasy filterExpression
lub atrybutu class
(nie można stosować obu elementów jednocześnie).true
oznacza, że filtr powinien być domyślnie włączony. Użytkownik może włączyć i wyłączyć filtr bez względu na wartość tego atrybutu. Atrybut ten określa jedynie, czy filtr ma być włączony przy pierwszym wyświetleniu widoku.<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Opcjonalne wyrażenie podstawowe środowiska Eclipse, które pozwala zdefiniować obiekty ukrywane za pomocą filtru w danym widoku.
Klienty mogą na przykład ukrywać wszystkie zasoby, w nazwach których występują określone wzorce (takie jak "*.acme"). Jeśli filtr jest aktywny (włączony domyślnie lub przez użytkownika), wszystkie zasoby, których nazwy kończą się łańcuchem "acme" są ukrywane w widoku prezentowanym użytkownikowi.
Klienty mogą korzystać z klasy filterExpression
lub atrybutu class
(nie można stosować obu elementów jednocześnie).
<!ELEMENT commonSorter (parentExpression)>
<!ATTLIST commonSorter
id CDATA #REQUIRED
class CDATA #REQUIRED>
Klasa commonSorter
zawiera deklarację podklasy klasy org.eclipse.jface.viewers.ViewerSorter
, która służy do sortowania elementów potomnych w ramach drzewa. Zagnieżdżony atrybut parentExpression
określa, kiedy należy korzystać z klasy commonSorter
. Jeśli element odpowiada atrybutowi parentExpression
, jego elementy potomne są sortowane za pomocą klasy commonSorter
.
org.eclipse.jface.viewers.ViewerSorter
.<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Atrybut parentExpression
jest wykorzystywany przez klasę commonSorter
do określania, kiedy należy ją stosować. Jeśli atrybut parentExpression
klasy commonSorter
odpowiada danemu elementowi, elementy potomne tego elementu (zwracane przez dostawcę treści usługi treści) są sortowane za pomocą tej klasy.
<!ELEMENT override EMPTY>
<!ATTLIST override
suppressedExtensionId CDATA #REQUIRED
policy (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">
Jeśli wyrażenie triggerPoints
zablokowanego rozszerzenia oraz zadeklarowane rozszerzenie dotyczące danego elementu są włączone, wskazane rozszerzenie zostanie wywołane, nie zostanie natomiast wywołane związane z nim zablokowane rozszerzenie. Klienty określające element override
muszą również udostępniać dostawcę treści, za pomocą którego implementowany jest interfejs org.eclipse.ui.navigator.IPipelinedTreeContentProvider
. Interfejs ten udostępnia metody służące do przechwytywania żądań dotyczących elementów potomnych i nadrzędnych oraz bezpośrednich aktualizacji przeglądarki.
InvokeAlwaysRegardlessOfSuppressedExt
. Poniżej opisano dostępne strategie.InvokeOnlyIfSuppressedExtAlsoVisibleAndActive
. Rozszerzenie to jest faktycznie rozszerzeniem przesłaniającym. O ile jego zablokowane rozszerzenie nie jest widoczne i aktywne z punktu widzenia przeglądarki, rozszerzenie to nie powinno mieć możliwości wnoszenia elementów. W przypadku korzystania z tej strategii rozszerzenie jest wywoływane jedynie jeśli wyrażenie triggerPoints
i wyrażenie triggerPoints
dotyczące tego zablokowanego rozszerzenia są włączone w odniesieniu do danego elementu. W związku z tym wyrażenie triggerPoints
i wyrażenie possibleChildren
tego rozszerzenia powinny być podzbiorami odpowiednio wyrażenia triggerPoints
i wyrażenia possibleChildren
zablokowanego rozszerzenia.InvokeAlwaysRegardlessOfSuppressedExt
(wartość domyślna). Wskazuje, że rozszerzenie jest rozszerzeniem klasy pierwszej. Powinno ono mieć możliwość wnoszenia treści bez względu na to, czy atrybut suppressedExtensionId
jest widoczny lub aktywny z punktu widzenia przeglądarki. W związku z tym rozszerzenie jest rozszerzeniem klasy pierwszej i rozszerzeniem przesłaniającym. Jest ono wywoływane w każdym przypadku, w którym występuje zgodność z wyrażeniem triggerPoints
. W przypadku zgodności z zablokowanym rozszerzeniem i jego rozszerzeniem triggerPoints
opisywane rozszerzenie jest wywoływane wraz z wniesionymi elementami pochodzącymi z zablokowanego rozszerzenia. Zablokowane rozszerzenie nie ma przy tym możliwości bezpośredniego wnoszenia elementów.<!ELEMENT dropAssistant (possibleDropTargets)>
<!ATTLIST dropAssistant
id CDATA #REQUIRED
class CDATA #REQUIRED>
Element ten udostępnia podklasę klasy org.eclipse.ui.navigator.CommonDropAdapterAssistant
, która umożliwia programowe sprawdzanie poprawności operacji upuszczania, żądanie dodatkowych typów przekazywania oraz obsługę operacji upuszczania.
Element dropAssistant
jest wywoływany za każdym razem, gdy przeciągane elementy są zgodne z wyrażeniem possibleChildren
zawierającego ten element rozszerzenia navigatorContent
oraz element docelowy upuszczania operacji został opisany za pomocą wyrażenia possibleDropTargets
elementu dropAssistant
.
Rozszerzenie może obejmować wiele adapterów upuszczania z wykluczającymi się wzajemnie wyrażeniami possibleDropTargets
. Upuszczanie może obsługiwać pierwszy znaleziony adapter upuszczania, który jest zgodny z danym celem upuszczania i zwraca status OK
dla metody CommonDropAdapterAssistant.validateDrop(...)
.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
.<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Element ten opisuje możliwe cele upuszczania, które może obsługiwać dany element dropAssistant
.
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Ogólny element główny. Element ten może być stosowany w ramach punktu rozszerzenia do zdefiniowania jego wyrażenia włączającego. Elementy potomne wyrażenia włączającego łączy się za pomocą operatora and
.
<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>
Element ten odpowiada operacji NOT wykonywanej na wynikach wartościowania wyrażenia podelementu.
<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Element ten odpowiada operacji AND wykonywanej na wynikach wartościowania wszystkich wyrażeń podelementów.
<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Element ten odpowiada operacji OR wykonywanej na wynikach wartościowania wszystkich wyrażeń podelementów.
<!ELEMENT instanceof EMPTY>
<!ATTLIST instanceof
value CDATA #REQUIRED>
Element ten służy do wykonywania sprawdzenia instanceof
obiektu aktywnego. Wyrażenie zwraca wartość EvaluationResult.TRUE
, jeśli typ obiektu jest podtypem typu określonego atrybutem value
. W przeciwnym razie zwracana jest wartość EvaluationResult.FALSE
.
<!ELEMENT test EMPTY>
<!ATTLIST test
property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED>
Element ten służy do wartościowania stanu właściwości obiektu aktywnego. Zbiór właściwości objętych testowaniem można rozszerzyć za pomocą punktu rozszerzenia testera właściwości. Wyrażenie testowe zwraca wartość EvaluationResult.NOT_LOADED
, jeśli nie załadowano jeszcze testera właściwości wykonującego faktyczne testowanie.
value
wyrażenia testowego.EvaluationResult.TRUE
, jeśli właściwość odpowiada danej wartości. W przeciwnym razie oczekiwana jest wartość EvaluationResult.FALSE
. Atrybut value
jest przekształcany w typ podstawowy języka Java zgodnie z następującymi regułami:
Boolean.TRUE
.Boolean.FALSE
.Float
. W przypadku niepowodzenia łańcuch jest traktowany jako klasa java.lang.String
.Integer
.Boolean
, Float
lub Integer
można zablokować, umieszczając łańcuch w pojedynczym cudzysłowie. Przykładowo atrybut value="'true'" jest przekształcany w łańcuch "true".<!ELEMENT systemTest EMPTY>
<!ATTLIST systemTest
property CDATA #REQUIRED
value CDATA #REQUIRED>
Testuje właściwość systemową, wywołując metodę System.getProperty
i porównując wynik z wartością określoną za pomocą atrybutu value
.
<!ELEMENT equals EMPTY>
<!ATTLIST equals
value CDATA #REQUIRED>
Element ten służy do wykonywania sprawdzenia equals
obiektu aktywnego. Wyrażenie zwraca wartość EvaluationResult.TRUE
, jeśli obiekt jest równy wartości określonej atrybutem value
. W przeciwnym razie zwracana jest wartość EvaluationResult.FALSE
.
equals
. Wartość podana jako łańcuch jest przekształcana w typ podstawowy języka Java zgodnie z regułami, które zdefiniowano w odniesieniu do atrybutu value
wyrażenia testowego.<!ELEMENT count EMPTY>
<!ATTLIST count
value CDATA #REQUIRED>
Element ten służy do sprawdzania liczby elementów w ramach kolekcji.
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST with
variable CDATA #REQUIRED>
Element ten zamienia obiekt, który ma być sprawdzany w odniesieniu do wszystkich elementów potomnych, na obiekt, do którego odwołuje się dana zmienna. Jeśli zmiennej nie można zinterpretować, podczas wartościowania wyrażenie zgłasza wyjątek ExpressionException
. Elementy potomne wyrażenia with
łączy się za pomocą operatora and
.
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST resolve
variable CDATA #REQUIRED
args CDATA #IMPLIED>
Element ten zamienia obiekt, który ma być sprawdzany w odniesieniu do wszystkich elementów potomnych, na obiekt, do którego odwołuje się dana zmienna. Jeśli zmiennej nie można zinterpretować, podczas wartościowania wyrażenie zgłasza wyjątek ExpressionException
. Elementy potomne wyrażenia with
łączy się za pomocą operatora and
.
IVariableResolver
) za pośrednictwem kontekstu wartościowania przekazywanego do elementu głównego wyrażenia w trakcie wartościowania tego wyrażenia.value
wyrażenia testowego.<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST adapt
type CDATA #REQUIRED>
Element ten służy do dostosowywania obiektu aktywnego do typu określonego atrybutem type
. Wyrażenie zwraca wartość not loaded
, jeśli nie załadowano jeszcze adaptera lub typu, którego dotyczy odwołanie. Jeśli nazwa typu w ogóle nie istnieje, podczas wartościowania zgłaszany jest wyjątek ExpressionException
. Elementy potomne wyrażenia adapt
łączy się za pomocą operatora and
.
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST iterate
operator (or|and) >
Element ten służy do iteracji zmiennej typu java.util.Collection
. Jeśli obiekt aktywny nie jest obiektem typu java.util.Collection
, podczas wartościowania wyrażenia zgłaszany jest wyjątek ExpressionException
.
and
lub or
. Operator określa, w jaki sposób mają być łączone elementy potomne. Jeśli nie została podana żadna wartość, stosowany jest operator and
.
W poniższym przykładzie przedstawiono rozszerzenie treści udostępniające treść zasobów. Wyrażenie triggerPoints
decyduje o tym, kiedy rozszerzenie jest wywoływane po raz pierwszy. Jeśli element viewerContentBinding
jest zgodny z tym rozszerzeniem, a jego atrybut isRoot
ma wartość true
, rozszerzenie będzie stosowane bez względu na to, czy element główny jest zgodny z wyrażeniem 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>
Klienty mogą wykorzystywać elementy wnoszone przez kontrybutora do obiektów lub przeglądarki (patrz opis punktu rozszerzenia org.eclipse.ui.popupMenus
) do udostępniania akcji w widokach. W niektórych przypadkach klienty wymagają jednak większej elastyczności niż oferowana przez powyższe metody, w związku z czym środowisko wspólnego nawigatora umożliwia dodawanie dostawców akcji. Dostawcy akcji zawierają w sobie podklasę org.eclipse.ui.actions.ActionGroup
i mogą wypełniać paski działań oraz menu po wystąpieniu określonych zdarzeń (odpowiednio wyboru i kliknięcia prawym przyciskiem myszy).
Klienty mogą powiązać jednego lub kilku dostawców akcji z określonym rozszerzeniem treści lub zadeklarować tych dostawców akcji jako elementy wnoszone najwyższego poziomu (niepowiązane z jakimkolwiek konkretnym rozszerzeniem treści). Dostawcy akcji najwyższego poziomu muszą być powiązani z określoną instancją przeglądarki za pomocą punktu rozszerzenia org.eclipse.ui.navigator.viewer/viewerActionBinding
. Zagnieżdżeni dostawcy akcji są automatycznie wiązani z przeglądarką w zależności od tego, czy zawierające ich rozszerzenie treści jest także powiązane z przeglądarką (patrz opis punktu rozszerzenia org.eclipse.ui.navigator/viewerContentBinding
).
Na poniższym przykładzie przedstawiono obie metody. Dostawca zagnieżdżony (TestNestedActionProvider
) ma możliwość wnoszenia elementów do menu org.eclipse.ui.IActionBars
wyłącznie jeśli rozszerzenie org.eclipse.ui.tests.navigator.testContent
jest widoczne i aktywne. Jeśli użytkownik deaktywuje rozszerzenie testowe w oknie dialogowym Dostępne dostosowania, zagnieżdżony dostawca akcji nie będzie mógł wnosić elementów.
<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>
Klienty mogą definiować filtry za pomocą podklas klasy org.eclipse.jface.viewers.ViewerFilter
lub za pośrednictwem wyrażeń podstawowych środowiska Eclipse. W poniższym przykładzie przedstawiono obie techniki. Klienty mogą korzystać tylko z jednej z tych dwóch opcji. W przypadku rozszerzeń, w których określono przypadkowo obie opcje, obsługiwany jest wyłącznie filtr wykorzystujący wyrażenia podstawowe. Pola nazwy i opisu można przetłumaczyć; w rzeczywistych środowiskach należy eksternalizować łańcuchy.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonFilter class=
"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"
description=
"Ukryj obiekty TestItem, które kończą się liczbą "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"Elementy TestItem kończące się liczbą "3""
activeByDefault=
"true"
/>
<commonFilter description=
"Ukrywa wszystkie instancje elementu TestItem"
id=
"org.eclipse.ui.tests.navigator.filters.AllTestItems"
name=
"Filtr wyrażenia elementu TestItem (zalecane sortowanie alfabetyczne)"
>
<filterExpression>
<instanceof value=
"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"
/>
</filterExpression>
</commonFilter>
Wspólny sorter dla zestawu elementów potomnych określa się na podstawie elementu nadrzędnego. Klasa sortera musi zawierać klasę podrzędną 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>
Na poniższym przykładzie przedstawiono sposób dodawania akcji skrótów kreatora do elementów Nowy folder i Nowy plik interfejsu org.eclipse.core.resources.IResource
. Klienty mogą korzystać z dowolnych części rozszerzenia org.eclipse.core.expressions, które są niezbędne do określenia, kiedy mają być dostępne opcje menu. Określony poniżej atrybut wizardId
musi odpowiadać identyfikatorowi jednego z punktów rozszerzeń org.eclipse.ui.xxxWizards
.
W przypadku klientów budujących własne przeglądarki lub części widoku należy skorzystać z klasy org.eclipse.ui.navigator.WizardActionGroup
w celu poprawnego wypełnienia menu. Dodatkowa dokumentacja dotycząca korzystania z tej opcji znajduje się w opisie powyższej klasy.
<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 i inne podmioty.
Wszelkie prawa zastrzeżone. Program ten oraz towarzyszące mu materiały są udostępniane na warunkach
licencji EPL (Eclipse Public License), wersja 1.0, dołączonej do nich i
dostępnej pod adresem http://www.eclipse.org/legal/epl-v10.html.