<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui.navigator">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui.navigator" id="navigatorContent" name="navigatorContent"/>
      </appInfo>
      <documentation>
         A content extension provides a content and label provider 
that can be used by a navigator content service. The
&lt;b&gt;navigatorContent&lt;/b&gt; extension defines the specific classes 
for the content provider, label provider, and action provider
in addition to the types of elements the extension knows about. 
&lt;p&gt;
The &lt;b&gt;triggerPoints&lt;/b&gt; expression describes the elements that will
cause this extension to be invoked for either children or for
labels. The &lt;b&gt;possibleChildren&lt;/b&gt; expression describes the elements 
that the extension may be able to provide a parent for. Clients
should describe all elements that could be set as the selection
to ensure that the link with editor support can properly 
expand to the right node.
&lt;p&gt;
      </documentation>
   </annotation>

   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>

   <element name="extension">
      <complexType>
         <sequence>
            <choice>
               <element ref="navigatorContent" minOccurs="0" maxOccurs="1"/>
               <element ref="actionProvider" minOccurs="0" maxOccurs="1"/>
               <element ref="commonWizard" minOccurs="0" maxOccurs="1"/>
               <element ref="commonFilter" minOccurs="0" maxOccurs="1"/>
            </choice>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="navigatorContent">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
         <documentation>
            A navigator content extension defines a content provider and label provider that can be used to provide children whenever an element matches the &lt;b&gt;triggerPoints&lt;/b&gt; expression and also to provide a parent whenever an element matches the &lt;b&gt;possibleChildren&lt;/b&gt; expression. 
&lt;br&gt;&lt;br&gt;
Optionally, clients may also provide an action provider which can provide menu contributions and action bar contributions when an element is selected that the extension contributed, or that matches the &lt;b&gt;triggerPoints&lt;/b&gt; expression. Clients may also choose to contribute a sorter to sort elements that are contributed by the extension.
&lt;br&gt;&lt;br&gt;
When an extension is deactivated by the user, the content and label providers are disposed. However, because many of the Image resources might be in use by other extensions in the Common Navigator Viewer, clients should not dispose of Image Resources until the viewer itself is disposed.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <choice>
               <element ref="enablement"/>
               <sequence>
                  <element ref="triggerPoints"/>
                  <element ref="possibleChildren"/>
               </sequence>
            </choice>
            <element ref="actionProvider" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="commonSorter" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="override" minOccurs="0" maxOccurs="1"/>
            <element ref="dropAssistant" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="commonWizard" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  A unique ID to identify this extension. Used for extension activation and by other extensions that would like to extend the defined extension (e.g. add another &lt;code&gt;org.eclipse.ui.navigator.CommonActionProvider&lt;/code&gt;)
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  Specify a display name for the Content Extension. The display name is used in the activation dialog to allow clients to turn an extension on or off.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="priority">
            <annotation>
               <documentation>
                  Indicates the relative priority of this extension to other extensions. Used by the Common Navigator to handle sorting and organization of the contributed content from this extension in relation to content from other extensions. Defaults to &quot;normal&quot;
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="lowest">
                  </enumeration>
                  <enumeration value="lower">
                  </enumeration>
                  <enumeration value="low">
                  </enumeration>
                  <enumeration value="normal">
                  </enumeration>
                  <enumeration value="high">
                  </enumeration>
                  <enumeration value="higher">
                  </enumeration>
                  <enumeration value="highest">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="contentProvider" type="string" use="required">
            <annotation>
               <documentation>
                  Supplies the name of a class which implements &lt;code&gt;org.eclipse.jface.viewers.ITreeContentProvider&lt;/code&gt; or &lt;code&gt;org.eclipse.ui.navigator.ICommonContentProvider&lt;/code&gt;.
&lt;br&gt;&lt;br&gt;
The content provider will be consulted when addeding children to the tree. Use the &lt;b&gt;enablement&lt;/b&gt; or &lt;b&gt;triggerPoints&lt;/b&gt; clause to indicate what kinds of content should trigger a request to your content provider.
&lt;br&gt;&lt;br&gt; 
Elements contributed from the content provider are not guaranteed to appear in the tree in the same order. Clients should take advantage of the sorting extension (&lt;b&gt;commonSorter&lt;/b&gt;) to ensure proper ordering of their elements.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.viewers.ITreeContentProvider"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="icon" type="string">
            <annotation>
               <documentation>
                  A plugin-relative path to an icon for use when displaying the metadata about the content extension to the user.
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="activeByDefault" type="boolean">
            <annotation>
               <documentation>
                  Indicates whether the current extension will be &lt;i&gt;active&lt;/i&gt; by default. Each content extension may be turned on or off by the user. The &lt;i&gt;active&lt;/i&gt; state is differentiated from the &lt;i&gt;visible&lt;/i&gt; state. See &lt;b&gt;org.eclipse.ui.navigator.viewer/viewerContentBinding&lt;/b&gt; for more information on &lt;i&gt;visibility&lt;/i&gt;
               </documentation>
            </annotation>
         </attribute>
         <attribute name="providesSaveables" type="boolean">
            <annotation>
               <documentation>
                  Indicates whether this extension provides saveables. The default is false. If set to true, the content provider must adapt to SaveablesProvider.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="labelProvider" type="string" use="required">
            <annotation>
               <documentation>
                  Supplies the name of a class which implements &lt;code&gt;org.eclipse.jface.viewers.ILabelProvider&lt;/code&gt; or for more advanced functionality, the &lt;code&gt;org.eclipse.ui.navigator.ICommonLabelProvider&lt;/code&gt;.
&lt;br&gt;&lt;br&gt;
Clients may also implement &lt;code&gt;org.eclipse.ui.navigator.IDescriptionProvider&lt;/code&gt; in order to add text to the status bar at the bottom of the Eclipse workbench based on the selection in the viewer.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.viewers.ILabelProvider"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="enablement">
      <annotation>
         <documentation>
            The enablement expression allows clients to specify the same expression for both &lt;b&gt;triggerPoints&lt;/b&gt; and &lt;b&gt;possibleChildren&lt;/b&gt;.
&lt;br&gt;&lt;br&gt;
In the case of &lt;b&gt;actionProvider&lt;/b&gt;, clients must define an expression that will indicate to the framework when their &lt;code&gt;org.eclipse.ui.navigator.CommonActionProvider&lt;/code&gt; should be invoked. Because of contributions to the IActionBars, clients must be invoked whenever an object they are interested in is selected. Therefore, clients should use discretion in deciding when their extension should be enabled.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <element name="triggerPoints">
      <annotation>
         <documentation>
            The &lt;b&gt;triggerPoints&lt;/b&gt; expression defines the nodes in a tree that should cause this extension to be invoked for children.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <element name="possibleChildren">
      <annotation>
         <documentation>
            The &lt;b&gt;possibleChildren&lt;/b&gt; expression defines the nodes in a tree that could be contributed by this extension. Clients should describes when this content extension could provide a parent for elements that match the expression.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <element name="actionProvider">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="class"/>
         </appInfo>
         <documentation>
            Supplies the name of a class that implements &lt;code&gt;org.eclipse.ui.navigator.CommonActionProvider&lt;/code&gt;. The action provider has an opportunity to contribute to the context menu and the retargetable actions defined in the IActionBars for the view that holds the navigator. Clients may also contribute directly to the view menu through the IActionBars view menu.
&lt;br&gt;&lt;br&gt;
A top level &lt;b&gt;actionProvider&lt;/b&gt; is &lt;i&gt;visible&lt;/i&gt; to an abstract viewer if there is a &lt;b&gt;viewerActionBinding&lt;/b&gt; for that &lt;b&gt;actionProvider&lt;/b&gt;. For actionProviders that are nested under a &lt;b&gt;navigatorContent&lt;/b&gt; element, the visibility will be controlled by the id of the navigatorContent extension id. Child action providers will automatically
be picked up by matching &lt;b&gt;viewerContentBinding&lt;/b&gt;s. See &lt;b&gt;org.eclipse.ui.navigator.viewer&lt;/b&gt; for more information on visibility bindings.
&lt;br&gt;&lt;br&gt;
Clients may provide &lt;b&gt;actionProvider&lt;/b&gt;(s) under the root &lt;b&gt;extention&lt;/b&gt; element (peer to other &lt;b&gt;navigatorContent&lt;/b&gt;) in order to better control their enablement and viewer binding (see &lt;b&gt;veiwerActionBinding&lt;/b&gt;).
&lt;br&gt;&lt;br&gt;
For root &lt;b&gt;actionProviders&lt;/b&gt; with no id, the id defaults to &quot;org.eclipse.ui.navigator.actionProvider.X&quot;. For these &lt;b&gt;actionProvider&lt;/b&gt;s to be given the opportunity to contribute the menus or action bars of a viewer, a &lt;b&gt;viewerActionBinding&lt;/b&gt; must be defined (as part of the &lt;b&gt;org.eclipse.ui.navigator.viewer extension point&lt;/b&gt;) which declares a binding between the specific viewer and the default id (&quot;org.eclipse.ui.navigator.actionProvider.*&quot;). See the documentation for &lt;b&gt;viewerActionBinding&lt;/b&gt; under the schema documentation of &lt;b&gt;org.eclipse.ui.navigator.viewer&lt;/b&gt; for more information.
&lt;br&gt;&lt;br&gt;
Any items contributed to the toolbar or the view menu should be removed with the &lt;b&gt;actionProviders&lt;/b&gt; is disposed.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="enablement" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ui.navigator.CommonActionProvider"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  Clients may optionally define an id to use for filtering purposes (either through activities or &lt;b&gt;viewerContentBinding&lt;/b&gt;s).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="dependsOn" type="string">
            <annotation>
               <documentation>
                  Specifies the ID of an action provider that configures some menu or submenu that must be prepared before this action provider is applied. 
&lt;br&gt;&lt;br&gt;
Specifying a dependency on another action provider does not guarantee that this action provider will be invoked whereever the required action provider is invoked. The downstream action provider must be bound to the particular viewer to be invoked.  
&lt;br&gt;&lt;br&gt;
If the required action provider is disabled or unbound to the current viewer, then this action provider will not be applied. If a cycle exists, the framework will try to continue, but there are no guarantees as to what menu items or action bar contributions will be available.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="overrides" type="string">
            <annotation>
               <documentation>
                  Specify the id of an &lt;b&gt;actionProvider&lt;/b&gt; which is defined by an upstream contributor that must be overridden. The upstream &lt;b&gt;actionProvider&lt;/b&gt; will not be given an opportunity to contribute menu options or retargetable actions when this &lt;b&gt;actionProvider&lt;/b&gt; is &lt;i&gt;visible&lt;/i&gt; and &lt;i&gt;enabled&lt;/i&gt;.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="commonWizard">
      <annotation>
         <documentation>
            Defines a binding between an existing Eclipse New/Import/Export Wizard and a given set of items. Each valid binding determines which menu items will appear in the submenus for New/Import/Export in the context menu of a Common Navigator Viewer. Since Eclipse 3.2.1, the wizard menu items respect Eclipse Capabilities (see &lt;b&gt;org.eclipse.ui.activites&lt;/b&gt; for more information). 
&lt;br&gt;&lt;br&gt;
All of the following conditions must be met for a &lt;b&gt;commonWizard&lt;/b&gt; item to appear in the menu: (1) The &lt;b&gt;commonWizard&lt;/b&gt; is NOT filtered by an Eclipse Capability, (2) The identifier of the &lt;b&gt;commonWizard&lt;/b&gt; is NOT null, (3) The associated &lt;b&gt;navigatorContent&lt;/b&gt; extension is &lt;i&gt;visible&lt;/i&gt; for the current content service (the content service used to initialize the &lt;code&gt;NavigatorActionService&lt;/code&gt; or supplied to &lt;code&gt;WizardActionGroup&lt;/code&gt;), (4) The associated &lt;b&gt;navigatorContent&lt;/b&gt; extension is &lt;i&gt;active&lt;/i&gt; for the current content service, and (5) The &lt;b&gt;enablement&lt;/b&gt; of the &lt;b&gt;commonWizard&lt;/b&gt; returns true for the current selection that was supplied to the context menu.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="enablement"/>
         </sequence>
         <attribute name="type" use="required">
            <annotation>
               <documentation>
                  The type atttribute should be the value of the root category of the expected wizard. The possible values include &quot;import&quot; for &lt;b&gt;org.eclipse.ui.importWizards&lt;/b&gt;, &quot;export&quot; &lt;b&gt;org.eclipse.ui.exportWizards&lt;/b&gt;, and &quot;new&quot; for &lt;b&gt;org.eclipse.ui.newWizards&lt;/b&gt;
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="import">
                  </enumeration>
                  <enumeration value="export">
                  </enumeration>
                  <enumeration value="new">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="wizardId" type="string" use="required">
            <annotation>
               <documentation>
                  The id of the desired wizard shortcut as defined by &lt;b&gt;org.eclipse.ui.importWizards&lt;/b&gt;, &lt;b&gt;org.eclipse.ui.exportWizards&lt;/b&gt;, or &lt;b&gt;org.eclipse.ui.newWizards&lt;/b&gt;
               </documentation>
            </annotation>
         </attribute>
         <attribute name="menuGroupId" type="string">
            <annotation>
               <documentation>
                  Indicates a user-defined logical grouping id. &lt;b&gt;commonWizard&lt;/b&gt; extensions with matching &lt;i&gt;menuGroupId&lt;/i&gt;s will be indicated as related items when rendered as menu options to endusers. How the grouping will be done is not guaranteed. In particular, clients should never anticipate a menu separator or group marker of the given name to be present in the menu.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="associatedExtensionId" type="string">
            <annotation>
               <documentation>
                  A &lt;b&gt;commonWizard&lt;/b&gt; may be defined as the nested child of a &lt;b&gt;navigatorContent&lt;/b&gt; extension point, in which case the &lt;i&gt;associatedExtensionId&lt;/i&gt; is automatically set to the id of its enclosing &lt;b&gt;naviagatorContent&lt;/b&gt; element. However, when specified as a top-level extension, a &lt;b&gt;commonWizard&lt;/b&gt; may indicate an content extension that it should be associated with explicitly. When a &lt;b&gt;commonWizard&lt;/b&gt; is associated with a content extension, it will inherit the &lt;i&gt;visibility&lt;/i&gt; and the &lt;i&gt;activation&lt;/i&gt; of that content extension. It will not inherit the &lt;i&gt;enablement&lt;/i&gt;; so you must specify an &lt;b&gt;enablement&lt;/b&gt; for the wizard menu item to appear.
&lt;br&gt;&lt;br&gt;
That is, if the content extension is bound to a Common Navigator (see &lt;b&gt;org.eclipse.ui.navigator.viewer/viewerContentBinding&lt;/b&gt;) and the user has the content extension &lt;i&gt;activated&lt;/i&gt; either by default or through the &quot;Available Extensions&quot; dialog, then the &lt;b&gt;commonWizard&lt;/b&gt; menu option would appear. However, when the user &lt;i&gt;deactivates&lt;/i&gt; that content extension, the &lt;b&gt;commonWizard&lt;/b&gt; menu option would no longer be shown in the menu.
&lt;br&gt;&lt;br&gt;
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="commonFilter">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
         <documentation>
            Defines a filter that can big associated with a particular Common Viewer. Common filters are bound to a viewer like content extensions by using &lt;b&gt;org.eclipse.ui.navigator.viewer/viewerContentBinding&lt;/b&gt;.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="filterExpression" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  A unique identifier that will be used for management of this &lt;b&gt;filterExpression&lt;/b&gt;. The id will be used by the &lt;b&gt;org.eclipse.ui.navigator.viewer/viewerContentBinding&lt;/b&gt; to bind this filter to a matching viewer.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  A translateable name that will be used to refer to this particular filter in dialogs presented to the user.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  A translatable description of what this filter is designed to hide from the view.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="class" type="string">
            <annotation>
               <documentation>
                  Clients may choose to define an explicit ViewerFilter subclass via the &quot;class&quot; attribute. Alternatively, clients may choose to nest a &lt;b&gt;filterExpression&lt;/b&gt; element to describe what the filter should hide. Clients may use either &lt;b&gt;filterExpression&lt;/b&gt; or the &quot;class&quot; attribute, but not both.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.viewers.ViewerFilter"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="activeByDefault" type="boolean">
            <annotation>
               <documentation>
                  A value of true indicates the filter should be &quot;on&quot; by default. The user may customize whether the filter is on or off regardless of the value of this attribute. This attribute defines whether the filter is &quot;on&quot; the first time the view is brought up.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="filterExpression">
      <annotation>
         <documentation>
            An optional Eclipse Core Expression that defines what the filter should hide from a particular view. 
&lt;br&gt;&lt;br&gt;
For instance, clients may decide to hide all resources that have a particular pattern in their name (like &quot;*.acme&quot;). When the filter is active (turned on by default or by the user), then all resources that end in &quot;acme&quot; would be hidden from the view of the user. 
&lt;br&gt;&lt;br&gt;
Clients may use either &lt;b&gt;filterExpression&lt;/b&gt; or the &quot;class&quot; attribute, but not both.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <element name="commonSorter">
      <annotation>
         <documentation>
            A &lt;b&gt;commonSorter&lt;/b&gt; declares an subclass of &lt;code&gt;org.eclipse.jface.viewers.ViewerSorter&lt;/code&gt; which is used to sort children in the tree. The nested &lt;b&gt;parentExpression&lt;/b&gt; describes when the &lt;b&gt;commonSorter&lt;/b&gt; should be used. If an element matches the &lt;b&gt;parentExpression&lt;/b&gt;, then its children will be sorted by this &lt;b&gt;commonSorter&lt;/b&gt;.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="parentExpression"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The id is used to identify the sorter when debugging a viewer.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  A subclass of &lt;code&gt;org.eclipse.jface.viewers.ViewerSorter&lt;/code&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.viewers.ViewerSorter"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="parentExpression">
      <annotation>
         <documentation>
            A &lt;b&gt;parentExpression&lt;/b&gt; is used by &lt;b&gt;commonSorter&lt;/b&gt; to identify when it is applicable. If the &lt;b&gt;parentExpression&lt;/b&gt; for a &lt;b&gt;commonSorter&lt;/b&gt; matches a given element, then that &lt;b&gt;commonSorter&lt;/b&gt; will be used to sort the children of that element (as returned by the content provider of the content service).
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <element name="override">
      <annotation>
         <documentation>
            When the &lt;b&gt;triggerPoints&lt;/b&gt; expression of the suppressed extension and the declared extension are both &lt;i&gt;enabled&lt;/i&gt; on a given element, this extension will be invoked, but its suppressed extension will not. Clients that specify an &lt;b&gt;override&lt;/b&gt; element must also provide a content provider which implements &lt;code&gt;org.eclipse.ui.navigator.IPipelinedTreeContentProvider&lt;/code&gt;, which provides methods to intercept requests for children, parents, and direct updates to the viewer.
&lt;br&gt;&lt;br&gt;
         </documentation>
      </annotation>
      <complexType>
         <attribute name="suppressedExtensionId" type="string" use="required">
            <annotation>
               <documentation>
                  The id of an extension should be suppressed when this extension is &lt;i&gt;visible&lt;/i&gt; and &lt;i&gt;active&lt;/i&gt;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="policy" use="default" value="InvokeAlwaysRegardlessOfSuppressedExt">
            <annotation>
               <documentation>
                  The policy declares how the extension should be invoked by the framework. If the policy is left unspecified, then it defaults to &lt;i&gt;InvokeAlwaysRegardlessOfSuppressedExt&lt;/i&gt;. The available policies are as follows:&lt;br&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;i&gt;InvokeOnlyIfSuppressedExtAlsoVisibleAndActive&lt;/i&gt;: This extension is expressly an overriding extension; unless its suppressed extension is &lt;i&gt;visible&lt;/i&gt; and &lt;i&gt;active&lt;/i&gt; to the viewer, this extension should not be given opportunities to contribute. When using this policy, this extension will only be invoked when the &lt;b&gt;triggerPoints&lt;/b&gt; expression of its suppressed extension and the &lt;b&gt;triggerPoints&lt;/b&gt; expression of this extension are &lt;i&gt;enabled&lt;/i&gt; for a given element. Therefore, the &lt;b&gt;triggerPoints&lt;/b&gt; and &lt;b&gt;possibleChildren&lt;/b&gt; expressions of this extension should be a subset of the &lt;b&gt;triggerPoints&lt;/b&gt; and &lt;b&gt;possibleChildren&lt;/b&gt; expressions respectively of its suppressed extension.&lt;/li&gt;
  &lt;li&gt;&lt;i&gt;InvokeAlwaysRegardlessOfSuppressedExt&lt;/i&gt; (default): Indicates that this extension is a first class extension; it should be given opportunities to contribute content regardless if its &lt;i&gt;suppressedExtensionId&lt;/i&gt; is &lt;i&gt;visible&lt;/i&gt; or &lt;i&gt;active&lt;/i&gt; to the viewer. Thus, the extension is a first-class extension and an overriding extension. It will be invoked whenever its &lt;b&gt;triggerPoints&lt;/b&gt; expression is matched. When the suppressed extension and its &lt;b&gt;triggerPoints&lt;/b&gt; extension is matched, it will be invoked with the contributed items from its suppressed extension; the suppressed extension will not be given an opportunity to directly contribute.&lt;/li&gt;
&lt;/ul&gt;
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="InvokeOnlyIfSuppressedExtAlsoVisibleAndActive">
                  </enumeration>
                  <enumeration value="InvokeAlwaysRegardlessOfSuppressedExt">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
      </complexType>
   </element>

   <element name="dropAssistant">
      <annotation>
         <documentation>
            Provides a subclass of &lt;code&gt;org.eclipse.ui.navigator.CommonDropAdapterAssistant&lt;/code&gt; which can provide programatic validation for a drop operation, request additional transfer types, and handle the drop operation. 
&lt;br&gt;&lt;br&gt;
A &lt;b&gt;dropAssistant&lt;/b&gt; will be invoked whenever elements that are dragged match the &lt;b&gt;possibleChildren&lt;/b&gt; expression of the containing &lt;b&gt;navigatorContent&lt;/b&gt; extension &lt;i&gt;and&lt;/i&gt; the drop target of the operation is described by the &lt;b&gt;possibleDropTargets&lt;/b&gt; expression of the &lt;b&gt;dropAssistant&lt;/b&gt; element.
&lt;br&gt;&lt;br&gt;
An extension may have multiple drop adapters with mutually exclusive &lt;b&gt;possibleDropTargets&lt;/b&gt; expressions. The first drop adapter found that matches the given drop target and returns an OK status for &lt;code&gt;CommonDropAdapterAssistant.validateDrop(...)&lt;/code&gt; will be given an opportunity to handle the drop. 
&lt;br&gt;&lt;br&gt;
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="possibleDropTargets"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The id is used to refer to the drop assistant internally. The id should be unique.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  An implementation of &lt;code&gt;org.eclipse.ui.navigator.CommonDropAdapterAssistant&lt;/code&gt;
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ui.navigator.CommonDropAdapterAssistant"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="possibleDropTargets">
      <annotation>
         <documentation>
            Describe the possible drop targets that a particular &lt;b&gt;dropAssistant&lt;/b&gt; can handle.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="not"/>
            <element ref="and"/>
            <element ref="or"/>
            <element ref="instanceof"/>
            <element ref="test"/>
            <element ref="systemTest"/>
            <element ref="equals"/>
            <element ref="count"/>
            <element ref="with"/>
            <element ref="resolve"/>
            <element ref="adapt"/>
            <element ref="iterate"/>
         </sequence>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         3.2
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;br&gt;
&lt;h2&gt;Adding content&lt;/h2&gt;
&lt;p&gt;
The following example describes a content extension that 
provides resource content. The &lt;b&gt;triggerPoints&lt;/b&gt; expression
determines when this extension is initially invoked. If 
a &lt;b&gt;viewerContentBinding&lt;/b&gt; matches this extension with
the &quot;isRoot&quot; attribute set to true, then the extension
will be used, regardless of whether the root element
matches the &lt;b&gt;triggerPoints&lt;/b&gt; expression.   
&lt;p&gt;
&lt;pre&gt;
&lt;extension  
  point=&quot;org.eclipse.ui.navigator.navigatorContent&quot;&gt;
 &lt;navigatorContent
            name=&quot;%resource.extension.name&quot;
            priority=&quot;low&quot;
            icon=&quot;icons/full/eview16/resource_persp.gif&quot;
            activeByDefault=&quot;true&quot;
               contentProvider=&quot;org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionContentProvider&quot;
               labelProvider=&quot;org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionLabelProvider&quot;   
               sorter=&quot;org.eclipse.ui.navigator.resources.internal.workbench.ResourceSorter&quot;
            id=&quot;org.eclipse.ui.navigator.resourceContent&quot;&gt;         
  &lt;triggerPoints&gt;
           &lt;or&gt;         
              &lt;instanceof 
                    value=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
              &lt;instanceof
                    value=&quot;org.eclipse.core.resources.IProject&quot; /&gt;  
              &lt;instanceof  
                     value=&quot;org.eclipse.core.resources.IFolder&quot; /&gt; 
           &lt;/or&gt;
  &lt;/triggerPoints&gt;
        &lt;possibleChildren&gt;
           &lt;or&gt;         
              &lt;instanceof 
                    value=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
              &lt;instanceof
                    value=&quot;org.eclipse.core.resources.IProject&quot; /&gt; 
              &lt;instanceof 
                     value=&quot;org.eclipse.core.resources.IResource&quot; /&gt; 
              &lt;instanceof  
                     value=&quot;org.eclipse.core.resources.IFolder&quot; /&gt;
              &lt;instanceof 
                     value=&quot;org.eclipse.core.resources.IFile&quot; /&gt; 
         &lt;/or&gt;
     &lt;/possibleChildren&gt;
 &lt;/navigatorContent&gt;
&lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;

&lt;h2&gt;Adding Actions&lt;/h2&gt;
&lt;p&gt;
Clients may use object or viewer contributions (see &lt;b&gt;org.eclipse.ui.popupMenus&lt;/b&gt;) to provide
actions for their view. Sometimes, clients require a greater degree of flexibility than either
of these approaches allow, and therefore the Common Navigator framework supports adding 
action providers. &quot;Action providers&quot; subclass &lt;code&gt;org.eclipse.ui.actions.ActionGroup&lt;/code&gt;
and have opportunities to fill the action bars and the menus based on different events 
(selection and right click respectively).
&lt;/p&gt;
&lt;p&gt;
Clients may either associate one or more action providers with a particular
content extension, or declare the action providers as top level contributions, unassociated
with any particular content extension. Top level action provideers must be associated with
a particular instance of vierwer using the &lt;b&gt;org.eclipse.ui.navigator.viewer/viewerActionBinding&lt;/b&gt;
extension point. Nested action providers are automatically bound to a viewer based on whether
their containing content extension is also bound to the viewer 
(see &lt;b&gt;org.eclipse.ui.navigator/viewerContentBinding&lt;/b&gt;). 
&lt;p&gt;
&lt;p&gt;
The following example demonstrates both approaches. The &quot;TestNestedActionProvider&quot; will be 
given an opporunity to contribute to the menu and &lt;code&gt;org.eclipse.ui.IActionBars&lt;/code&gt; only
when the &quot;org.eclipse.ui.tests.navigator.testContent&quot; extension is &lt;i&gt;visible&lt;/i&gt; and &lt;i&gt;active&lt;/i&gt;.
If the user deactivates the test extension from the &quot;Available customizations&quot; dialog, then the
nested action provider will no longer be given the opportunity to contribute. 
&lt;pre&gt;
&lt;extension  
  point=&quot;org.eclipse.ui.navigator.navigatorContent&quot;&gt; 
      &lt;navigatorContent 
            id=&quot;org.eclipse.ui.tests.navigator.testContent&quot; 
            name=&quot;%test.navigator.extension&quot;
            contentProvider=&quot;org.eclipse.ui.tests.navigator.extension.TestContentProvider&quot;
            labelProvider=&quot;org.eclipse.ui.tests.navigator.extension.TestLabelProvider&quot;
            activeByDefault=&quot;true&quot;
            priority=&quot;normal&quot;&gt;
         &lt;triggerPoints&gt;
            &lt;instanceof value=&quot;org.eclipse.core.resources.IProject&quot;/&gt;
         &lt;/triggerPoints&gt; 
        &lt;actionProvider
            class=&quot;org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider&quot;
            id=&quot;org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider&quot;&gt;
          &lt;enablement&gt;
             &lt;instanceof value=&quot;org.eclipse.core.resources.IResource&quot;/&gt;
          &lt;/enablement&gt;
        &lt;/actionProvider&gt;
      &lt;/navigatorContent&gt;  
        &lt;actionProvider
             class=&quot;org.eclipse.ui.navigator.resources.internal.actions.NewActionProvider&quot;
             id=&quot;org.eclipse.ui.navigator.resources.NewActions&quot;&gt; 
         &lt;enablement&gt;
    &lt;or&gt;
     &lt;adapt type=&quot;org.eclipse.core.resources.IFile&quot; /&gt; 
     &lt;adapt type=&quot;org.eclipse.core.resources.IFolder&quot; /&gt;
            &lt;adapt type=&quot;org.eclipse.core.resources.IProject&quot; /&gt; 
                 &lt;adapt type=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
    &lt;/or&gt;
          &lt;/enablement&gt;
  &lt;/actionProvider&gt;
&lt;/extension&gt;  
&lt;/pre&gt;
&lt;/p&gt;


&lt;p&gt;
Clients may define filters using either subclasses of &lt;code&gt;org.eclipse.jface.viewers.ViewerFilter&lt;/code&gt; 
or through Eclipse core expressions. The folowing example demonstrates both techniques. Clients may 
only use of the two options. Extensions that specify both in error will result in only the core
expression filter being respected. The name and description fields are translateable, and should externalized
strings in real environments.

&lt;p&gt;
&lt;pre&gt;
&lt;extension  
  point=&quot;org.eclipse.ui.navigator.navigatorContent&quot;&gt;
 &lt;commonFilter
      class=&quot;org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3&quot;
            description=&quot;Hide TestItem objects that end in the number &amp;quot;3&amp;quot;&quot;
            id=&quot;org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3&quot;
            name=&quot;TestItems that end with &amp;quot;3&amp;quot;&quot;
            activeByDefault=&quot;true&quot;
            /&gt; 
 &lt;commonFilter
            description=&quot;Hides all instances of Test Item&quot;
            id=&quot;org.eclipse.ui.tests.navigator.filters.AllTestItems&quot;
            name=&quot;A TestItem Exp Filter (should be sorted alphab..)&quot;&gt;
         &lt;filterExpression&gt;
            &lt;instanceof value=&quot;org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData&quot;/&gt;
         &lt;/filterExpression&gt;
 &lt;/commonFilter&gt;
&lt;/pre&gt;
&lt;/p&gt;

&lt;/p&gt;

&lt;p&gt;
A common sorter is determined for a set of children based on their parent. The sorter class
must subclass the &lt;code&gt;org.eclipse.jface.viewers.ViewerSorter&lt;/code&gt;. 
&lt;p&gt;
&lt;pre&gt;

&lt;extension  
  point=&quot;org.eclipse.ui.navigator.navigatorContent&quot;&gt;
 &lt;commonSorter
      class=&quot;org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionSorter&quot;
            id=&quot;org.eclipse.ui.navigator.resources.sorters.defaultSorter&quot;&gt;
  &lt;parentExpression&gt;
         &lt;or&gt;         
       &lt;instanceof 
           value=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
          &lt;instanceof
           value=&quot;org.eclipse.core.resources.IProject&quot; /&gt; 
          &lt;instanceof 
           value=&quot;org.eclipse.core.resources.IResource&quot; /&gt; 
          &lt;instanceof  
           value=&quot;org.eclipse.core.resources.IFolder&quot; /&gt;
          &lt;instanceof 
           value=&quot;org.eclipse.core.resources.IFile&quot; /&gt; 
   &lt;/or&gt;
  &lt;/parentExpression&gt;
 &lt;/commonSorter&gt;
&lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
The following example demonstrates how to add wizard shortcut actions for 
&quot;New Folder&quot; and &quot;New File&quot;, which are enabled on the specific subclasses 
of org.eclipse.core.resources.IResource. Clients may use whatever parts of 
the &lt;b&gt;org.eclipse.core.expressions&lt;/b&gt; that are necessary to describe when the 
menu options should be available. The wizardId specified below must correspond
to one of the &lt;b&gt;org.eclipse.ui.xxxWizards&lt;/b&gt; extension points.
&lt;/p&gt;
&lt;p&gt;
For clients building their own viewers or
view parts, be sure to use &lt;code&gt;org.eclipse.ui.navigator.WizardActionGroup&lt;/code&gt;
to correctly populate the menu. See that class for more documentation on
using this feature.
&lt;/p&gt;
&lt;p&gt;
&lt;pre&gt;

&lt;extension  
  point=&quot;org.eclipse.ui.navigator.navigatorContent&quot;&gt;
 &lt;commonWizard
      type=&quot;new&quot;
   wizardId=&quot;org.eclipse.ui.wizards.new.folder&quot;&gt;
  &lt;enablement&gt;
   &lt;or&gt;
    &lt;adapt type=&quot;org.eclipse.core.resources.IFile&quot; /&gt; 
    &lt;adapt type=&quot;org.eclipse.core.resources.IFolder&quot; /&gt;
           &lt;adapt type=&quot;org.eclipse.core.resources.IProject&quot; /&gt; 
             &lt;adapt type=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
   &lt;/or&gt;
  &lt;/enablement&gt;
 &lt;/commonWizard&gt;   
 &lt;commonWizard
            type=&quot;new&quot;
            wizardId=&quot;org.eclipse.ui.wizards.new.file&quot;&gt;
  &lt;enablement&gt;
   &lt;or&gt;
    &lt;adapt type=&quot;org.eclipse.core.resources.IFile&quot; /&gt; 
    &lt;adapt type=&quot;org.eclipse.core.resources.IFolder&quot; /&gt;
           &lt;adapt type=&quot;org.eclipse.core.resources.IProject&quot; /&gt; 
             &lt;adapt type=&quot;org.eclipse.core.resources.IWorkspaceRoot&quot; /&gt; 
   &lt;/or&gt;
  &lt;/enablement&gt;
 &lt;/commonWizard&gt;
&lt;/extension&gt; 
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2002, 2005 IBM Corporation and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at &lt;a 
href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
