<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ui" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ui" id="installationPages" name="Installation Dialog Pages"/>
      </appInfo>
      <documentation>
         &lt;p&gt;The Eclipse UI provides an AboutDialog that can be branded and reused by client product plugins.  This dialog typically shows the product splash image and other descriptive information about the product. The about dialog includes a button that allows the user to launch a secondary dialog, the &lt;b&gt;Installation Details&lt;/b&gt; dialog.&lt;/p&gt;
&lt;p&gt;The purpose of this extension point is to allow plug-ins to add
pages to the installation details dialog.  When the installation details dialog is opened, the pages contributed in this way will be added to the dialog box.  These pages are used to supply additional detail about the product configuration.&lt;/p&gt;

&lt;p&gt;This is an experimental extension point for an extensible about dialog.  It is not ready for production and is included at this time only for evaluation by downstream clients.  Use at your own risk.&lt;/p&gt;
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="page" minOccurs="0" maxOccurs="unbounded"/>
         </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>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="page">
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The fully qualified name of a concrete subclass of  &lt;code&gt;org.eclipse.ui.about.InstallationPage&lt;/code&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ui.about.InstallationPage"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example installation page: 
&lt;p&gt;
&lt;pre&gt;
   &lt;extension point=&quot;org.eclipse.ui.installationPages&quot;&gt; 
       &lt;page
            name=&quot;XYZ Info&quot;
            class=&quot;org.eclipse.ui.internal.XYZInstallInfoPage&quot;
            id=&quot;org.eclipse.ui.internal.xyz&gt;
       &lt;/page&gt;
    &lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiinfo"/>
      </appInfo>
      <documentation>
         The value of the attribute class must represent a fully qualified name of a class that is a concrete subclass of
&lt;samp&gt;org.eclipse.ui.about.InstallationPage&lt;/samp&gt;.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         The Workbench uses this extension point to provide the following pages in the installation details dialog:
&lt;ul&gt;
&lt;li&gt;Plug-ins: A list of all of the plug-ins in the running the system, including details about each plug-in.&lt;/li&gt;
&lt;li&gt;Configuration: The configuration information contributed via the &lt;samp&gt;org.eclipse.ui.systemSummarySections&lt;/samp&gt; extension.&lt;/li&gt;
&lt;/ul&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2008, 2009 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>
