<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui" id="newWizards" name="Creation Wizards"/>
      </appInfo>
      <documentation>
         This extension point is used to register resource creation wizard extensions. Creation wizards appear as choices within the &quot;New Dialog&quot;, and are typically used to create folders and files. 
&lt;p&gt;
In the &quot;New Dialog&quot;, wizards are organized into categories which usually reflect a particular problem domain.  For instance, a Java oriented plugin may define a category called &quot;Java&quot; which is appropriate for &quot;Class&quot; or &quot;Package&quot; creation wizards.  The categories defined by one plug-in can be referenced by other plug-ins using the category attribute. Uncategorized wizards, as well as wizards with invalid category paths, will end up in an &quot;Other&quot; category. 
&lt;/p&gt;

&lt;p&gt;
Wizards may optionally specify a description subelement whose body should contain short text about the wizard.
&lt;/p&gt;
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <choice minOccurs="0" maxOccurs="unbounded">
            <element ref="category"/>
            <element ref="wizard"/>
            <element ref="primaryWizard"/>
         </choice>
         <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>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="category">
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  a unique name that can be used to identify this category
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a translatable name of the category that will be used in the dialog box
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="parentCategory" type="string">
            <annotation>
               <documentation>
                  a path to another category if this category should be added as a child
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.newWizards/category/@id"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="wizard">
      <complexType>
         <sequence>
            <element ref="description" minOccurs="0" maxOccurs="1"/>
            <element ref="selection" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="keywordReference" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  a unique name that can be used to identify this wizard
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a translatable name of the wizard that will be used in the dialog box
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="icon" type="string">
            <annotation>
               <documentation>
                  a relative path of an icon that will be used together with the name to represent the wizard 
as one of the choices in the creation dialog box.
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="category" type="string">
            <annotation>
               <documentation>
                  a slash-delimited path (&apos;/&apos;) of category IDs. Each token in the
path must represent a valid category ID previously defined
by this or some other plug-in. If omitted, the wizard will be
added to the &quot;Other&quot; category.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified name of the Java class implementing &lt;samp&gt;org.eclipse.ui.INewWizard&lt;/samp&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.wizard.Wizard:org.eclipse.ui.INewWizard"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="project" type="boolean">
            <annotation>
               <documentation>
                  an optional attribute indicating the wizard will create an IProject resource.
Also causes the wizard to appear as a choice within the &quot;New Project Dialog&quot;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="finalPerspective" type="string">
            <annotation>
               <documentation>
                  an optional attribute which identifies a perspective to activate when IProject resource creation is finished.
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.perspectives/perspective/@id"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="preferredPerspectives" type="string">
            <annotation>
               <documentation>
                  an optional attribute specifying a comma-separated list of perspective IDs.  If the current perspective is in this list, then no perspective activation occurs when IProject resource creation is finished.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helpHref" type="string">
            <annotation>
               <documentation>
                  a help url that can describe this wizard in detail.
&lt;p&gt;
Since 3.0
&lt;/p&gt;
               </documentation>
            </annotation>
         </attribute>
         <attribute name="descriptionImage" type="string">
            <annotation>
               <documentation>
                  a larger image that can help describe this wizard.
&lt;p&gt;
Since 3.0
&lt;/p&gt;
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="canFinishEarly" type="boolean">
            <annotation>
               <documentation>
                  whether the wizard is capable of finishing without ever showing pages to the user.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="hasPages" type="boolean">
            <annotation>
               <documentation>
                  whether the wizard provides any pages.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="description" type="string">
      <annotation>
         <appInfo>
            <meta.element translatable="true"/>
         </appInfo>
         <documentation>
            an optional subelement whose body contains a short text describing what the wizard will do when started
         </documentation>
      </annotation>
   </element>

   <element name="selection">
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified class name.  If each object in the workbench selection implements this interface the selection will be passed to the wizard.  Otherwise, an empty selection is passed
               </documentation>
               <appInfo>
                  <meta.attribute kind="java"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name filter.  Each object in the workbench selection must match the name filter to be passed to the wizard
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="primaryWizard">
      <annotation>
         <documentation>
            a means of declaring that a wizard is &quot;primary&quot; in the UI.  A primary wizard is emphasized in the new wizard dialog.  Please note that this element is not intended to be used by plug in developers!  This element exists so that product managers may emphasize a set of wizards for their products.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  the id of a wizard that should be made primary.
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.newWizards/wizard/@id"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="keywordReference">
      <annotation>
         <documentation>
            A reference by a New Wizard to a keyword. See the keywords extension point.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The id of the keyword being referred to.
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.keywords/keyword/@id"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         Following is an example of creation wizard configuration: 
&lt;p&gt;
&lt;pre&gt;
   &lt;extension point=&quot;org.eclipse.ui.newWizards&quot;&gt; 
      &lt;category 
        id=&quot;com.xyz.XYZ&quot; 
        name=&quot;XYZ Wizards&quot;&gt; 
      &lt;/category&gt; 
      &lt;category 
        id=&quot;com.xyz.XYZ.Web&quot; 
        name=&quot;Web Wizards&quot; 
        parentCategory=&quot;com.xyz.XYZ&quot;&gt; 
      &lt;/category&gt; 
      &lt;wizard 
          id=&quot;com.xyz.wizard1&quot; 
          name=&quot;XYZ artifact&quot; 
          category=&quot;com.xyz.XYZ/com.xyz.XYZ.Web&quot; 
          icon=&quot;./icons/XYZwizard1.gif&quot; 
          class=&quot;com.xyz.XYZWizard1&quot;&gt; 
          &lt;description&gt; 
              Create a simple XYZ artifact and set initial content 
          &lt;/description&gt; 
           &lt;selection class=&quot;org.eclipse.core.resources.IResource&quot;/&gt;          
      &lt;/wizard&gt; 
   &lt;/extension&gt; 
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The value of the class attribute must represent a class 
that implements &lt;samp&gt;org.eclipse.ui.INewWizard&lt;/samp&gt;. 
If the wizard is created from within the 
New Wizard it will be inserted into the existing wizard.  
If the wizard is launched as a shortcut 
(from the File New menu or a toolbar button) it will 
appear standalone as a separate dialog box.
      </documentation>
   </annotation>


   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         The workbench comes with wizards for creating empty 
resources of the following types: 
project, folder and file. These wizards are registered 
using the same mechanism as described above. 
Additional wizards may also appear, subject to 
particular platform installation.
      </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>
