<?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="deleteParticipants" name="Delete Participants"/>
      </appInfo>
      <documentation>
         This extension point is used to define refactoring delete 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;Object element: the element to be deleted&lt;/li&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;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="deleteParticipant" 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="deleteParticipant">
      <complexType>
         <all>
            <element ref="enablement"/>
         </all>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unique identifier for the delete participant.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  a human reabable name of the delete 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.DeleteParticipant"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

&lt;pre&gt;
&lt;deleteParticipant
    id=&quot;org.myCompany.deleteParticipant&quot;
    name=&quot;%DeleteParticipant.name&quot; 
    class=&quot;org.myCompany.Participant&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.ICompilationUnit&quot;/&gt;
      &lt;/with&gt;
    &lt;/enablement&gt;
&lt;/deleteParticipant&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.DeleteParticipant&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, 2004 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>
