Punkt rozszerzenia navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Opisywany punkt rozszerzenia umożliwia usłudze treści Nawigatora korzystanie z dostawcy treści i etykiet. Rozszerzenie 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.



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



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



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



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



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



<!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(...).



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



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



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



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




Dodawanie treści

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>

Dodawanie akcji

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ą &quot;3&quot;"

id=

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

name=

"Elementy TestItem kończące się liczbą &quot;3&quot;"

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>