<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.jem.util">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.jem.util" id="uiTester" name="UI Tester"/>
      </appInfo>
      <documentation>
         This is used to tell JEM that it is running in a non-HEADLESS environment. Typically UI environment is non-HEADLESS. The default if there are no implementers of this extension point that return true is HEADLESS.
&lt;p&gt;
A HEADLESS environment is typically a batch situation where there is no UI and the workspace is used for one operation and then terminated. Most headless tasks are done under one operation and the JavaReflectionSynchronizer may not have a chance to flush a bad reflection before the real type needs to be found and can be found. So what would happen is if a class was created during this one operation it would not be found because the notifications had not yet gone out. 
&lt;p&gt;
In a UI environment the operations are typically short and do only a few things and the results aren&apos;t needed until after the operation has completed. In that case it is more efficient to not keep checking if a class has appeared everytime a request is made, instead it will wait for the notification of the added class to appear before resetting the definition to allow checking again later.
&lt;p&gt;
If there is more than one implementer of this interface in the application, then it will go through each of them once until one returns true. As soon as one returns true it will stop and mark the application as being non-HEADLESS. This will be done only once for the application. It will not be again until the next session of the application.
&lt;p&gt;
This is typically an internal extension point only. The JEM UI plugin will provide an implementation that will return true if the Platform UI is active. So this will normally not be needed to be implemented by most customers.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="uiTester"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="uiTester">
      <annotation>
         <documentation>
            The uiTester definition element.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="className" type="string" use="required">
            <annotation>
               <documentation>
                  The class name of the UITester for this extension. It must implement &lt;samp&gt;org.eclipse.jem.util.UITester&lt;/samp&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jem.util.UITester"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of an implementer: 

&lt;p&gt;
&lt;pre&gt;
 &lt;extension point=&quot;org.eclipse.jem.util.uiTester&quot;&gt;
  &lt;uiTester
   className=&quot;com.example.UITesterImplementation&quot;/&gt;
 &lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The &lt;samp&gt;className&lt;/samp&gt; attribute must be a fully-qualified class that implements the &lt;samp&gt;org.eclipse.jem.util.UITester&lt;/samp&gt; interface for the tester.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         There is no default implementation for this class.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2004, 2006 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;https://www.eclipse.org/legal/epl-2.0/
&quot;&gt;https://www.eclipse.org/legal/epl-2.0/
&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
