<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.e4.ui.css.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="org.eclipse.e4.ui.css.core" id="org.eclipse.e4.ui.css.core.propertyHandler" name="Properties"/>
      </appinfo>
      <documentation>
         This extension point binds a handler class for a set of properties for a particular type of DOM elements.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appinfo>
            <meta.element />
         </appinfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="handler" minOccurs="1" 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="handler">
      <annotation>
         <documentation>
            A handler defines a binding from a set of property names to a property handler for a particular DOM element.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="property-name" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="composite" type="boolean">
            <annotation>
               <documentation>
                  If true, then this handler represents a composite CSS Property (e.g., &quot;background&quot; is CSS Property composed with background-color, background-image, and others).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="adapter" type="string" use="required">
            <annotation>
               <documentation>
                  This property handler applies only to DOM elements of this type.
               </documentation>
               <appinfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.e4.ui.css.core.dom.ElementAdapter:"/>
               </appinfo>
            </annotation>
         </attribute>
         <attribute name="handler" type="string">
            <annotation>
               <documentation>
                  This class implements the property setting.
               </documentation>
               <appinfo>
                  <meta.attribute kind="java" basedOn=":org.eclipse.e4.ui.css.core.dom.properties.ICSSPropertyHandler"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="property-name">
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The CSS property name.  If not officially part of the W3C&apos;s &lt;a href=&quot;http://www.w3.org/TR/CSS2/&quot;&gt;CSS 2 Standard&lt;/a&gt; then the property should be prefixed.  For example, SWT-specific properties are prefixed with &lt;tt&gt;-swt-&lt;/tt&gt;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="deprecated" type="string">
            <annotation>
               <documentation>
                  If specified, indicates this property-name is deprecated.  Specifies a deprecation message typically intended to indicate alternatives to using this property.  This message is typically logged on first use of this property-name.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>


   <annotation>
      <appinfo>
         <meta.section type="examples"/>
      </appinfo>
      <documentation>
         &lt;extension point=&quot;org.eclipse.e4.ui.css.core.propertyHandler&quot;&gt;
  &lt;handler
      adapter=&quot;org.eclipse.e4.ui.css.swt.dom.ControlElement&quot;
      composite=&quot;true&quot;
      handler=&quot;org.eclipse.e4.ui.css.swt.properties.css2.CSSPropertyBackgroundSWTHandler&quot;&gt;
    &lt;property-name name=&quot;background&quot;/&gt;
    &lt;property-name name=&quot;background-color&quot;/&gt;
    &lt;property-name name=&quot;background-image&quot;/&gt;
  &lt;/handler&gt;
&lt;/extension&gt;
      </documentation>
   </annotation>


   <annotation>
      <appinfo>
         <meta.section type="implementation"/>
      </appinfo>
      <documentation>
         Supplied interfaces provide abstract classes to simplify implementation.
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="copyright"/>
      </appinfo>
      <documentation>
         Copyright (c) 2008 - 2012 Angelo Zerr 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>
