<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui.navigator" xmlns="http://www.w3.org/2001/XMLSchema">
<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="unbounded"/>
               <element ref="actionProvider" minOccurs="0" maxOccurs="unbounded"/>
               <element ref="commonWizard" minOccurs="0" maxOccurs="unbounded"/>
               <element ref="commonFilter" minOccurs="0" maxOccurs="unbounded"/>
            </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.
&lt;br&gt;&lt;br&gt;
Since 3.4, clients may also implement &lt;code&gt;org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider&lt;/code&gt; to provide styled text labels. Note that the empty styled string signals that the label provider does not wish to render the label.
               </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"/>
            <element ref="reference"/>
         </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"/>
            <element ref="reference"/>
         </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"/>
            <element ref="reference"/>
         </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>
         <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>
      </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"/>
            <element ref="reference"/>
         </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" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="id" type="string">
            <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"/>
            <element ref="reference"/>
         </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"/>
            <element ref="reference"/>
         </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="copyright"/>
      </appinfo>
      <documentation>
         Copyright (c) 2002, 2006 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>
