<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.jdt.ui">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.jdt.ui" id="quickAssistProcessors" name="Quick Assist Processor"/>
      </appInfo>
      <documentation>
         This extension point allows to add a Quick Assist processor to offer new Quick Assists in the Java editor.

This extension point supports the &lt;code&gt;&amp;lt;enablement&amp;gt;&lt;/code&gt; element.
&lt;!-- see org.eclipse.jdt.internal.ui.text.correction.ContributedProcessorDescriptor#matches(ICompilationUnit): --&gt;
The default variable is the containing &lt;code&gt;org.eclipse.jdt.core.ICompilationUnit&lt;/code&gt;.
&lt;br&gt;Defined variables for &lt;code&gt;&amp;lt;with&amp;gt;&lt;/code&gt; expressions are:
&lt;ul&gt;
&lt;li&gt;&quot;compilationUnit&quot;: type &lt;code&gt;org.eclipse.jdt.core.ICompilationUnit&lt;/code&gt;; the compilation unit the quick assist is applied on (same as the default variable)&lt;/li&gt;
&lt;li&gt;&quot;projectNatures&quot;: type &lt;code&gt;java.util.Collection&amp;lt;String&amp;gt;&lt;/code&gt;; all project natures of the current project&lt;/li&gt;
&lt;li&gt;&quot;sourceLevel&quot;: type &lt;code&gt;java.lang.String&lt;/code&gt;; the source compliance level of the current project&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="quickAssistProcessor" minOccurs="1" 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="quickAssistProcessor">
      <complexType>
         <sequence>
            <element ref="enablement" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  a unique identifier for the Quick Assist processor
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  a localized name of the Quick Assist processor
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="class" type="string">
            <annotation>
               <documentation>
                  the name of the class that implements this Quick Assist processor. The
class must be public and implement
&lt;samp&gt;org.eclipse.jdt.ui.text.java.IQuickAssistProcessor&lt;/samp&gt;
with a public 0-argument constructor.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jdt.ui.text.java.IQuickAssistProcessor"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="requiredSourceLevel" type="string">
            <annotation>
               <documentation>
                  an optional attribute to specify the minimal source compliance this processor requires
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of a Quick Assist processor contribution:

&lt;pre&gt;
 &lt;extension point=&quot;org.eclipse.jdt.ui.quickAssistProcessors&quot;&gt;
  &lt;quickAssistProcessor
   id=&quot;AdvancedQuickAssistProcessor&quot;
   name=&quot;Advanced Quick Assist Processor&quot;
   requiredSourceLevel=&quot;1.5&quot;  
   class=&quot;com.example.AdvancedQuickAssistProcessor&quot;&gt;
  &lt;/quickAssistProcessor&gt;
   &lt;enablement&gt;
      &lt;with variable=&quot;projectNatures&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;/enablement&gt;
 &lt;/extension&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 implement &lt;code&gt;org.eclipse.jdt.ui.text.java.IQuickAssistProcessor&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;

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at &lt;a href=&quot;https://www.eclipse.org/legal/epl-2.0&quot;&gt;https://www.eclipse.org/legal/epl-v20.html&lt;/a&gt;/

SPDX-License-Identifier: EPL-2.0
      </documentation>
   </annotation>

</schema>
