<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.gmf.runtime.common.ui.services.properties">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.gmf.runtime.common.ui.services.properties" id="propertiesProviders" name="Properties Providers Extension Point"/>
      </appInfo>
      <documentation>
         This extension point facilitates the configuration of providers for the properties service (&lt;tt&gt;org.eclipse.gmf.runtime.common.ui.services.properties.PropertiesService&lt;/tt&gt;). Using this extension point, providers are registered to contribute properties to the Eclipse property sheet view part, given a workbench selection.
&lt;P&gt;
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="PropertiesProvider"/>
         </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="PropertiesProvider">
      <annotation>
         <documentation>
            A property provider element describes a client defined property provider object.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="Priority"/>
         </sequence>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The &apos;class&apos; attribute must contain a fully qualified name of the property provider class. The property provider must implement org.eclipse.gmf.runtime.common.ui.services.properties.IPropertyProvider interface.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="verifyPluginLoaded" type="boolean">
            <annotation>
               <documentation>
                  The &apos;verifyPluginLoaded&apos; attribute will be used while testing the applicability of the given provider. If set to true, the service will verify that provider&apos;s plugin is loaded, before running IPropertyProvider.provides() test. If the declaring plugin is not loaded the IPropertyProvider.provides() will not be called and provider will be considered not applicable. If the decalring pluging is loaded, the service will run IPropertyProvider.provides() to determine wither or not the provider is applicable. When the &apos;verifyPluginLoaded&apos; attribute is set to false - the verification will not be perfomed and IPropertyProvider.provides() will called regardless of the plugin being loaded.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Priority">
      <annotation>
         <documentation>
            Priority element specifies the priority of the provider from HIGHEST to LOWEST. The providers will be allowed to contribute to the property source in order of their priorities - from HIGHEST to LOWEST. This will ensure the desired order of contribution and helps to exclude duplicate properties, already contributed by others. For example, a provider with LOWEST priority, when executed, can check if there are any properties already contributed by any other providers. If none - it may want to contribute, if some - may want to withraw from contribution.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" use="required">
            <annotation>
               <documentation>
                  Enumeration with the following 5 values HIGHEST, HIGH, MEDIUM, LOW, LOWEST.
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="Lowest">
                  </enumeration>
                  <enumeration value="Low">
                  </enumeration>
                  <enumeration value="Medium">
                  </enumeration>
                  <enumeration value="High">
                  </enumeration>
                  <enumeration value="Highest">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of a provider extension:
 &lt;pre&gt;
 &lt;extension
         id=&quot;myPropertiesProvider&quot;
         name=&quot;My Properties Provider Name&quot;
         point=&quot;org.eclipse.gmf.runtime.common.ui.services.properties.propertiesProviders&quot;&gt;
      &lt;PropertiesProvider
            verifyPluginLoaded=&quot;false&quot;
            class=&quot;com.examples.MyPropertiesProvider&quot;&gt;
         &lt;Priority
               name=&quot;Medium&quot;&gt;
         &lt;/Priority&gt;
      &lt;/PropertiesProvider&gt;
   &lt;/extension&gt;
 &lt;/pre&gt;   
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The value of the &lt;tt&gt;class&lt;/tt&gt; attribute must represent a subclass of
         &lt;tt&gt;org.eclipse.gmf.runtime.common.core.service.AbstractProvider&lt;/tt&gt; that implements
         &lt;tt&gt;org.eclipse.gmf.runtime.common.ui.services.properties.IPropertiesProvider&lt;/tt&gt;
      </documentation>
   </annotation>

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

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