<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ltk.ui.refactoring">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ltk.ui.refactoring" id="statusContextViewers" name="Refactoring Status Context Viewers"/>
      </appInfo>
      <documentation>
         This extension point is used to define a special viewer capable to present the context of a refactoring status entry to the user. The reader of the extension point provides the following predefined variables which can be accessed during expression evaluation using the &amp;lt;with variable=&quot;...&quot;/&amp;gt; tag:
&lt;p&gt;
&lt;dl&gt;
  &lt;dt&gt;context&lt;/dt&gt;
  &lt;dd&gt;the context object managed by the refactoring status entry that is to be presented
      in the user interface.&lt;/dd&gt;
&lt;/dl&gt;
&lt;/p&gt;
Variables can be accessed using the &amp;lt;with variable=&quot;...&quot;/&amp;gt; expression. The default variable used during expression evaluation is bound to the context variable.
      </documentation>
   </annotation>

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

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="statusContextViewer" 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="statusContextViewer">
      <complexType>
         <all>
            <element ref="enablement"/>
         </all>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  unique identifier for the status context viewer.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  the name of the class that provides the implementation.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ltk.ui.refactoring.IStatusContextViewer"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The example below contributes a status context viewer for FileStatusContext objects.

&lt;pre&gt;
   &lt;extension point=&quot;org.eclipse.ltk.ui.refactoring.statusContextViewers&quot;&gt;
      &lt;statusContextViewer
            class=&quot;org.eclipse.ltk.internal.ui.refactoring.FileStatusContextViewer&quot;
            id=&quot;org.eclipse.ltk.internal.ui.refactoring.fileStatusContextViewer&quot;&gt;
         &lt;enablement&gt;
            &lt;instanceof value=&quot;org.eclipse.ltk.core.refactoring.FileStatusContext&quot;/&gt;
         &lt;/enablement&gt;
      &lt;/statusContextViewer&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 extend &lt;code&gt;org.eclipse.ltk.ui.refactoring.IStatusContextViewer&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 Common Public License v1.0 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/cpl-v10.html&quot;&gt;http://www.eclipse.org/legal/cpl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
