<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ltk.core.refactoring">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ltk.core.refactoring" id="createParticipants" name="Create Participants"/>
      </appInfo>
      <documentation>
         This extension point is used to define refactoring create participants.

&lt;p&gt;
This extension point supports the &lt;code&gt;&amp;lt;enablement&amp;gt;&lt;/code&gt; element.
&lt;!-- see org.eclipse.ltk.core.refactoring.participants.ParticipantExtensionPoint#createEvaluationContext(..): --&gt;
The default variable is the element to be created
&lt;br&gt;Defined variables for &lt;code&gt;&amp;lt;with&amp;gt;&lt;/code&gt; expressions are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;element&quot;: type &lt;code&gt;java.lang.Object&lt;/code&gt;; the element to be created (same as the default variable)&lt;/li&gt;
&lt;li&gt;&quot;affectedNatures&quot;: type &lt;code&gt;java.util.List&amp;lt;String&amp;gt;&lt;/code&gt;; the natures of all projects affected by the refactoring&lt;/li&gt;
&lt;li&gt;&quot;processorIdentifier&quot;: type &lt;code&gt;java.lang.String&lt;/code&gt;; the id of the refactoring processor that will own the participant&lt;/li&gt;
&lt;/ul&gt;
      </documentation>
   </annotation>

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

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="createParticipant" 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="createParticipant">
      <complexType>
         <all>
            <element ref="enablement"/>
         </all>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unique identifier for the create participant.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a human reabable name of the create participant
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  the name of the class that provides the participant implementation.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ltk.core.refactoring.participants.CreateParticipant"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The example below defines a create participant. The participant is enabled if one of the project affected by the refactoring has a Java nature and when the element to be created is a folder.

&lt;pre&gt;
&lt;createParticipant
    id=&quot;org.myCompany.createParticipant&quot;
    name=&quot;%CreateParticipant.name&quot; 
    class=&quot;org.myCompany.CreateParticipant&quot;&gt;
    &lt;enablement&gt;
      &lt;with variable=&quot;affectedNatures&quot;&gt;
        &lt;iterate operator=&quot;or&quot;&gt;
          &lt;equals value=&quot;org.eclipse.jdt.core.javanature&quot;/&gt;
        &lt;/iterate&gt;
      &lt;/with&gt;
      &lt;with variable=&quot;element&quot;&gt;
        &lt;instanceof value=&quot;org.eclipse.core.resources.IFolder&quot;/&gt;
      &lt;/with&gt;
    &lt;/enablement&gt;
&lt;/createParticipant&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>

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

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The contributed class must extend &lt;code&gt;org.eclipse.ltk.core.refactoring.participants.CreateParticipant&lt;/code&gt;
      </documentation>
   </annotation>

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

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