<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>

<!--
     Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
     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
     https://www.eclipse.org/legal/epl-2.0

     SPDX-License-Identifier: EPL-2.0
    
     Contributors:
         Thales Corporate Services S.A.S - initial API and implementation
 -->

<plugin>

  <!-- ================================================================================= -->
  <!-- Types Model                                                                       -->
  <!-- ================================================================================= -->

  <extension 
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="http://www.eclipse.org/egf/1.0.0/types"
      class="org.eclipse.egf.model.types.provider.TypesItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource
         org.eclipse.emf.edit.provider.ITableItemLabelProvider
         org.eclipse.emf.edit.provider.ITableItemColorProvider
         org.eclipse.emf.edit.provider.ITableItemFontProvider
         org.eclipse.emf.edit.provider.IItemColorProvider
         org.eclipse.emf.edit.provider.IItemFontProvider"
      />
  </extension>
    
  <!-- ================================================================================= -->
  <!-- Fcore Model                                                                       -->
  <!-- ================================================================================= -->
  
  <extension 
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="http://www.eclipse.org/egf/1.0.0/fcore"
      class="org.eclipse.egf.model.fcore.provider.FcoreItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource
         org.eclipse.emf.edit.provider.ITableItemLabelProvider
         org.eclipse.emf.edit.provider.ITableItemColorProvider
         org.eclipse.emf.edit.provider.ITableItemFontProvider
         org.eclipse.emf.edit.provider.IItemColorProvider
         org.eclipse.emf.edit.provider.IItemFontProvider"
      />
  </extension>
  
  <extension
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="org.eclipse.egf.model.fcore.util"
      class="org.eclipse.egf.model.fcore.provider.FcoreResourceItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource" 
    />
  </extension>      
  
  <!-- ================================================================================= -->
  <!-- Domain Model                                                                      -->
  <!-- ================================================================================= -->  
  
  <extension 
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="http://www.eclipse.org/egf/1.0.0/domain"
      class="org.eclipse.egf.model.domain.provider.DomainItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource
         org.eclipse.emf.edit.provider.ITableItemLabelProvider
         org.eclipse.emf.edit.provider.ITableItemColorProvider
         org.eclipse.emf.edit.provider.ITableItemFontProvider
         org.eclipse.emf.edit.provider.IItemColorProvider
         org.eclipse.emf.edit.provider.IItemFontProvider"
    />
  </extension> 
   
  <extension 
    point="org.eclipse.emf.edit.childCreationExtenders"
  >
    <extender
      uri="http://www.eclipse.org/egf/1.0.0/fcore"
      class="org.eclipse.egf.model.domain.provider.DomainItemProviderAdapterFactory$FcoreChildCreationExtender"
    />
  </extension>   
   
  <!-- ================================================================================= -->
  <!-- Mapping Model                                                                     -->
  <!-- ================================================================================= -->
    
  <extension 
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="http://www.eclipse.org/egf/1.0.0/mapping"
      class="org.eclipse.egf.model.mapping.provider.MappingItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource
         org.eclipse.emf.edit.provider.ITableItemLabelProvider
         org.eclipse.emf.edit.provider.ITableItemColorProvider
         org.eclipse.emf.edit.provider.ITableItemFontProvider
         org.eclipse.emf.edit.provider.IItemColorProvider
         org.eclipse.emf.edit.provider.IItemFontProvider"
    />
  </extension>
  
  <extension 
    point="org.eclipse.emf.edit.childCreationExtenders"
  >
    <extender
      uri="http://www.eclipse.org/egf/1.0.0/fcore"
      class="org.eclipse.egf.model.mapping.provider.MappingItemProviderAdapterFactory$FcoreChildCreationExtender"
    />
  </extension>  
  
  <!-- ================================================================================= -->
  <!-- Pattern Model                                                                     -->
  <!-- ================================================================================= --> 
  
  <extension 
    point="org.eclipse.emf.edit.itemProviderAdapterFactories"
  >
    <factory
      uri="http://www.eclipse.org/egf/1.0.0/pattern"
      class="org.eclipse.egf.model.pattern.provider.PatternItemProviderAdapterFactory"
      supportedTypes=
        "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
         org.eclipse.emf.edit.provider.IStructuredItemContentProvider
         org.eclipse.emf.edit.provider.ITreeItemContentProvider
         org.eclipse.emf.edit.provider.IItemLabelProvider
         org.eclipse.emf.edit.provider.IItemPropertySource
         org.eclipse.emf.edit.provider.ITableItemLabelProvider
         org.eclipse.emf.edit.provider.ITableItemColorProvider
         org.eclipse.emf.edit.provider.ITableItemFontProvider
         org.eclipse.emf.edit.provider.IItemColorProvider
         org.eclipse.emf.edit.provider.IItemFontProvider"
      />
  </extension>   
  
  <extension 
    point="org.eclipse.emf.edit.childCreationExtenders"
  >
    <extender
      uri="http://www.eclipse.org/egf/1.0.0/fcore"
      class="org.eclipse.egf.model.pattern.provider.PatternItemProviderAdapterFactory$FcoreChildCreationExtender"
    />
  </extension>   

</plugin>
