<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui.editors" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui.editors" id="templates" name="Editor Template"/>
      </appInfo>
      <documentation>
         Templates are snippets of text or code which help the user enter reoccurring patterns into a text editor. Templates may contain variables which are resolved in the context where the template is inserted.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name" />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="template" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="resolver" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="contextType" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="include" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="contextTypeRegistry" 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>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="contextType">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
         <documentation>
            A context type defines a context within which templates are evaluated. A context type uses its resolvers to resolve a template.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unambiguously identifies this context type. Use of a qualified name is recommended.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  a subclass of &lt;code&gt;org.eclipse.jface.text.templates.TemplateContextType&lt;/code&gt;
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.text.templates.TemplateContextType"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  the display name of this context
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="registryId" type="string">
            <annotation>
               <documentation>
                  the id of the context type registry where this context type is automatically registered. Since 3.5.
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.editors.templates/contextTypeRegistry/@id"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="resolver">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name" icon="icon"/>
         </appInfo>
         <documentation>
            A template variable resolver can resolve a template variable in a certain context.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="contextTypeId" type="string" use="required">
            <annotation>
               <documentation>
                  references the context type that this resolver is contributed to
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.editors.templates/contextType/@id"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="type" type="string" use="required">
            <annotation>
               <documentation>
                  the type of this variable resolver. This property will be set on the resolver once it gets created.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  a subclass of &lt;code&gt;org.eclipse.jface.text.templates.TemplateVariableResolver&lt;/code&gt;
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jface.text.templates.TemplateVariableResolver"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  the description of this variable resolver. This property will be set on the resolver once it gets created.
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  the display name of this resolver
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="icon" type="string">
            <annotation>
               <documentation>
                  an icon that may be displayed in the user interface
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="template">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name" icon="icon"/>
         </appInfo>
         <documentation>
            A template is a snippet of code or text that will be evaluated in a given context. Variables which will be resolved in that context can be specified using the &lt;tt&gt;${variable_type}&lt;/tt&gt; notation.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="pattern"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unambiguously identifies this template. Use of a qualified name is recommended.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="contextTypeId" type="string" use="required">
            <annotation>
               <documentation>
                  references the context type that this template is contributed to
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.ui.editors.templates/contextType/@id"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  the internationalizable name of the template which will show up in the UI, such as in template proposals
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  the description of this template
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="icon" type="string">
            <annotation>
               <documentation>
                  an icon that may be displayed in the UI for this template, for example in content assist proposals
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="autoinsert" type="boolean" use="default" value="true">
            <annotation>
               <documentation>
                  &lt;code&gt;true&lt;/code&gt; (default) to make the template automatically insertable, &lt;code&gt;false&lt;/code&gt; to not allow automatic insertion. Since 3.1.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="pattern" type="string">
      <annotation>
         <documentation>
            The template pattern.
         </documentation>
      </annotation>
   </element>

   <element name="include">
      <annotation>
         <documentation>
            A collection of templates encoded as XML can be included as a whole via this element.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="file" type="string" use="required">
            <annotation>
               <documentation>
                  the XML file to import templates from. It defines at least one &amp;lt;template&amp;gt; element inside &amp;lt;templates&amp;gt;...&amp;lt;/templates&amp;gt;, with the following attributes:
&lt;ul&gt;
	&lt;li&gt;id - the uniqe id&lt;/li&gt;
	&lt;li&gt;name - the name&lt;/li&gt;
	&lt;li&gt;context - the context id&lt;/li&gt;
	&lt;li&gt;description - the description (optional, default: &quot;&quot;)&lt;/li&gt;
	&lt;li&gt;autoinsert (optional, default: true)&lt;/li&gt;
	&lt;li&gt;enabled (optional, default: true)&lt;/li&gt;
&lt;/ul&gt;
See above template element for more details about those attributes.
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="translations" type="string">
            <annotation>
               <documentation>
                  an optional properties file with resources for the templates specified in &lt;tt&gt;file&lt;/tt&gt;.
&lt;br&gt;
&lt;em&gt;Note:&lt;/em&gt; The translation files are not treated as resource bundles and hence the file name has to be left as is i.e. do not add the  locale to the file name. The translated files must be in the &apos;nl&apos; directory i.e. if a [plugin] defines a template translations file in its plugin.xml like:
&lt;pre&gt;
...
  translations=$nl$/[plugin-relative path to file]
...
&lt;/pre&gt;
then the translations must go into:
&lt;pre&gt;
  [plugins nl fragment]/nl/[locale]/templates/[plugin-relative path to file]
&lt;/pre&gt;
               </documentation>
               <appInfo>
                  <meta.attribute kind="resource"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="contextTypeRegistry">
      <annotation>
         <documentation>
            Defines a registry for context types. Context types which define a &apos;registryId&apos; are automatically added to the registry which is created by &lt;code&gt;new org.eclipse.ui.editors.text.templates.ContributionContextTypeRegistry(registryId)&lt;/code&gt;. Since 3.5.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  the id of this registry
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;pre&gt;
   &lt;extension
         point=&quot;org.eclipse.ui.editors.templates&quot;&gt;
      &lt;template
         name=&quot;%ant.tasks.javac.name&quot;
         contextTypeId=&quot;org.eclipse.ui.examples.templateeditor.antcontext&quot;
         id=&quot;org.eclipse.ui.examples.templateeditor.templates.javac&quot;
         description=&quot;%ant.tasks.javac.description&quot;&gt;
          &lt;pattern&gt;
             &lt;javac srcdir=&quot;${src}&quot;
               destdir=&quot;${dst}&quot;
               classpath=&quot;${classpath}&quot;
               debug=&quot;${debug}&quot;/&gt;
          &lt;/pattern&gt;
      &lt;/template&gt;
      
      &lt;resolver
         contextTypeId=&quot;org.eclipse.ui.examples.templateeditor.antcontext&quot;
         type=&quot;src&quot;
         class=&quot;org.eclipse.ui.examples.templateeditor.editors.AntVariableResolver&quot;&gt;
      &lt;/resolver&gt;
      
      &lt;resolver
         contextTypeId=&quot;org.eclipse.ui.examples.templateeditor.antcontext&quot;
         type=&quot;dst&quot;
         class=&quot;org.eclipse.ui.examples.templateeditor.editors.AntVariableResolver&quot;&gt;
      &lt;/resolver&gt;
   &lt;/extension&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         See the &lt;code&gt;org.eclipse.jface.text.templates&lt;/code&gt; package in the &lt;tt&gt;org.eclipse.text&lt;/tt&gt; plug-in for the relevant API.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         See the &lt;code&gt;org.eclipse.jface.text.templates&lt;/code&gt; package in the &lt;tt&gt;org.eclipse.text&lt;/tt&gt; plug-in for the relevant classes.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2001, 2010 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>
