<?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="renameParticipants" name="Rename Participants"/>
      </appInfo>
      <documentation>
         This extension point is used to define refactoring rename participants. The reader of the expression provides the following predefined variables which can be referenced via the &amp;lt;with variable=&quot;...&quot;&amp;gt; expression element:

&lt;ul&gt;
  &lt;li&gt;List&amp;lt;String&amp;gt; affectedNatures: a list containing the natures of the projects affected 
      by the refactoring&lt;/li&gt;
  &lt;li&gt;Object element: the element to be renamed&lt;/li&gt;
  &lt;li&gt;String processorId: the id of the refactoring processor that will own the participant.
&lt;/ul&gt;

The default variable used during expression evaluation is bound to the element variable.
      </documentation>
   </annotation>

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

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="renameParticipant" 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="renameParticipant">
      <complexType>
         <all>
            <element ref="enablement"/>
         </all>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unique identifier for the rename participant.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a human reabable name of the rename participant
               </documentation>
            </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.RenameParticipant"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The example below defines a rename participant that participates in a type rename.
The participant is enabled if one of the project affected by the refactoring has a
Java nature and when the type to be renamed is a JUnit test.

&lt;pre&gt;
&lt;renameParticipant
    id=&quot;org.eclipse.jdt.junit.renameTypeParticipant&quot;
    name=&quot;%RenameTypeParticipant.name&quot; 
    class=&quot;org.eclipse.jdt.internal.junit.ui.TypeRenameParticipant&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.jdt.core.IType&quot;/&gt;
        &lt;test property=&quot;org.eclipse.jdt.junit.isTest&quot;/&gt;
      &lt;/with&gt;
    &lt;/enablement&gt;
&lt;/renameParticipant&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>

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

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

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

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         &lt;p&gt;
&lt;a href=&quot;hglegal.htm&quot;&gt;
 &lt;img SRC=&quot;ngibmcpy.gif&quot;
   ALT=&quot;Copyright (c) 2000, 2004 IBM Corporation and others. All Rights Reserved.&quot;
   BORDER=0 height=14 width=324&gt;&lt;/a&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

</schema>
