<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui" id="preferencePages" name="Preference Pages"/>
      </appInfo>
      <documentation>
         The workbench provides one common dialog box for preferences.
The purpose of this extension point is to allow plug-ins to add
pages to the preference dialog box. When preference dialog box
is opened (initiated from the menu bar), pages contributed in
this way will be added to the dialog box. 

&lt;p&gt;
The preference dialog
box provides for hierarchical grouping of the pages. For this
reason, a page can optionally specify a &lt;samp&gt;category&lt;/samp&gt; attribute.
This
attribute represents a path composed of parent page IDs separated
by &apos;/&apos;. If this attribute is omitted or if any of the parent
nodes in the path cannot be found, the page will be added at
the root level.
&lt;/p&gt;
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="page" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified identifier of the target extension point
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  an optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name of the extension instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="page">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  a unique name that will be used to identify this page.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a translatable name that will be used in the UI for this page.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  a name of the fully qualified class that implements 
&lt;samp&gt;org.eclipse.ui.IWorkbenchPreferencePage&lt;/samp&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.preference.PreferencePage:org.eclipse.ui.IWorkbenchPreferencePage"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="category" type="string">
            <annotation>
               <documentation>
                  a path indicating the location of the page in the preference tree. The path may either be a parent node ID or a sequence
     of IDs separated by &apos;/&apos;, representing the full path from the root node.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example for the preference extension point: 
&lt;p&gt;
&lt;pre&gt;
   &lt;extension 
       point=&quot;org.eclipse.ui.preferencePages&quot;&gt; 
      &lt;page 
         id=&quot;com.xyz.prefpage1&quot; 
         name=&quot;XYZ&quot; 
         class=&quot;com.xyz.prefpages.PrefPage1&quot;&gt; 
      &lt;/page&gt; 
      &lt;page 
         id=&quot;com.xyz.prefpage2&quot; 
         name=&quot;Keyboard Settings&quot; 
         class=&quot;com.xyz.prefpages.PrefPage2&quot; 
         category=&quot;com.xyz.prefpage1&quot;&gt; 
      &lt;/page&gt; 
   &lt;/extension&gt; 
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The value of the attribute class must represent a fully qualified name of the class that implements
&lt;samp&gt;org.eclipse.ui.IWorkbenchPreferencePage&lt;/samp&gt;.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         The workbench adds several pages for setting the preferences of the platform. Pages registered
through this extension will be added after them according to their category information.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2002, 2003 IBM Corporation and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made 
available under the terms of the Common Public License v1.0 which accompanies 
this distribution, and is available at 
&lt;a href=&quot;http://www.eclipse.org/legal/cpl-v10.html&quot;&gt;http://www.eclipse.org/legal/cpl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
