<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
 #=============================================================================#
 # Copyright (c) 2012, 2019 Stephan Wahlbrink and others.
 # 
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License 2.0 which is available at
 # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 # which is available at https://www.apache.org/licenses/LICENSE-2.0.
 # 
 # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 # 
 # Contributors:
 #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
 #=============================================================================#
-->

<plugin>

   <extension point="org.eclipse.emf.ecore.generated_package">
      <package
            uri="http://walware.de/rtm/Rt-ggplot/1.0"
            class="org.eclipse.statet.rtm.ggplot.GGPlotPackage"
            genModel="model/RtGGPlot-1.genmodel"/>
   </extension>

   <extension point="org.eclipse.emf.ecore.content_parser">
      <parser
            contentTypeIdentifier="org.eclipse.statet.rtm.contentTypes.GGPlot"
            class="org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl"/>
   </extension>

   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
      <factory
            uri="http://walware.de/rtm/Rt-ggplot/1.0"
            class="org.eclipse.statet.rtm.ggplot.provider.GGPlotItemProviderAdapterFactory"
            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>

   <extension point="org.eclipse.core.contenttype.contentTypes">
      <content-type
            base-type="org.eclipse.emf.ecore.xmi"
            file-extensions="Rtx-ggplot"
            id="org.eclipse.statet.rtm.contentTypes.GGPlot"
            name="%_UI_GGPlot_content_type"
            priority="normal">
         <describer class="org.eclipse.emf.ecore.xmi.impl.RootXMLContentHandlerImpl$Describer">
            <parameter name="namespace" value="http://walware.de/rtm/Rt-ggplot/1.0"/>
            <parameter name="kind" value="xmi"/>
         </describer>
      </content-type>
   </extension>
   
</plugin>
