<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.modisco.infra.browser.uicore" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="org.eclipse.modisco.infra.browser.uicore" id="icons" name="Icons for model elements"/>
      </appinfo>
      <documentation>
         Used to provide icons for model elements.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appinfo>
            <meta.element />
         </appinfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="metamodel" 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="metamodel">
      <annotation>
         <documentation>
            Defines the metamodel for which this icon provider will be used.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="iconProvider" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The nsURI of the package containing the metamodel definition, or &quot;*&quot; (a star character) to specify that this icon provider applies to all metamodels.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="iconProvider">
      <annotation>
         <documentation>
            An icon provider which is asked to provide icons for model elements, instances of the metamodel defined in the &quot;metamodel&quot; element.
         </documentation>
      </annotation>
      <complexType>
         <choice minOccurs="0" maxOccurs="1">
            <element ref="filter"/>
         </choice>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  Specify a class that will provide an icon for model elements.
               </documentation>
               <appinfo>
                  <meta.attribute kind="java" basedOn=":org.eclipse.modisco.common.editor.extensions.icons.IconProvider"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="filter">
      <annotation>
         <documentation>
            A list of metaclasses for which this icon provider will be used. If the filter is not defined, then the icon provider will be used for every metaclass in the metamodel.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="1" maxOccurs="unbounded">
            <element ref="metaclass"/>
         </sequence>
      </complexType>
   </element>

   <element name="metaclass">
      <annotation>
         <documentation>
            A metaclass that is selected by this filter, so that its instances icons will be provided by the icon provider.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The full qualified name of the metaclass.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appinfo>
         <meta.section type="since"/>
      </appinfo>
      <documentation>
         0.7
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="examples"/>
      </appinfo>
      <documentation>
         The following is an example of an icon provider extension definition for the Java metamodel:
&lt;p&gt;
&lt;pre&gt;
&lt;extension
    id=&quot;org.eclipse.modisco.infra.browser.extension.java.icons&quot;
    point=&quot;org.eclipse.modisco.infra.browser.uicore.icons&quot;&gt;
  &lt;metamodel
      id=&quot;http://www.eclipse.org/MoDisco/Java/0.2.incubation/java&quot;&gt;
    &lt;iconProvider
        class=&quot;org.eclipse.modisco.java.browser.extension.IconProvider&quot;&gt;
    &lt;/iconProvider&gt;
  &lt;/metamodel&gt;
&lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="apiinfo"/>
      </appinfo>
      <documentation>
         Implement the IconProvider interface, or FilteredIconProvider if you want to add additional filtering.
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="implementation"/>
      </appinfo>
      <documentation>
         See plugin project &quot;org.eclipse.modisco.java.browser.extension&quot;, available at  https://dev.eclipse.org/svnroot/modeling/org.eclipse.modisco/deprecated/plugins/org.eclipse.modisco.java.browser.extension
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="copyright"/>
      </appinfo>
      <documentation>
         Copyright (c) 2009 Mia-Software and others.

All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v2.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v20.html
      </documentation>
   </annotation>

</schema>
