<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<feature
      id="org.apache.felix.sigil.eclipse.core.feature"
      label="Sigil SDK"
      version="${version}"
      provider-name="Paremus Ltd">

   <description>
      Sigil plugin, integrated IDE and headless build system for OSGi developers.
   </description>

   <license url="http://www.apache.org/licenses/LICENSE-2.0">
      Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied.
See the License for the specific language governing permissions
and
limitations under the License.
   </license>

   <url>
      <update url="${update-site}"/>
   </url>

   <requires>
      <import plugin="org.eclipse.ant.core"/>
      <import plugin="org.eclipse.core.expressions"/>
      <import plugin="org.eclipse.core.runtime"/>
      <import plugin="org.eclipse.debug.ui"/>
      <import plugin="org.eclipse.jdt.core"/>
      <import plugin="org.eclipse.jdt.ui"/>
      <import plugin="org.eclipse.jface.text"/>
      <import plugin="org.eclipse.pde.ui"/>
      <import plugin="org.eclipse.ui.editors"/>
      <import plugin="org.eclipse.ui.forms"/>
      <import plugin="org.eclipse.ui.ide"/>
      <import plugin="org.eclipse.ui.workbench.texteditor"/>
      <import plugin="org.eclipse.ui"/>
      <import plugin="org.eclipse.osgi"/>
      <import plugin="org.eclipse.jdt.launching"/>
      <import plugin="org.eclipse.ui.console"/>
      <import plugin="org.eclipse.jdt.debug.ui"/>
      <import plugin="org.eclipse.ui.editors" version="3.4.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.jface.text" version="3.4.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.ui.ide" version="3.4.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.help"/>
      <import plugin="org.eclipse.zest.core" version="1.0.0" match="compatible"/>
      <import plugin="org.eclipse.zest.layouts" version="1.0.0" match="compatible"/>
      <import plugin="org.eclipse.ltk.core.refactoring"/>
      <import plugin="org.eclipse.help" version="3.3.1" match="greaterOrEqual"/>
      <import plugin="org.eclipse.ui.cheatsheets" version="3.3.100" match="greaterOrEqual"/>
      <import plugin="org.eclipse.core.resources"/>
      <import plugin="org.eclipse.equinox.common" version="3.4.0" match="greaterOrEqual"/>
   </requires>

   <plugin
         id="com.springsource.org.apache.commons.lang"
         download-size="0"
         install-size="0"
         version="2.4.0"
         unpack="false"/>
         
   <plugin
         id="org.apache.felix.sigil.common.core"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

   <plugin
         id="org.apache.felix.sigil.common.osgi"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>
         
   <plugin
         id="org.apache.felix.sigil.common.runtime"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

   <plugin
         id="org.apache.felix.sigil.eclipse.core"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

   <!--plugin
         id="org.apache.felix.sigil.eclipse.help"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/-->

   <plugin
         id="org.apache.felix.sigil.eclipse.runtime"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>
         
   <plugin
         id="org.apache.felix.sigil.eclipse.search"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

   <plugin
         id="org.apache.felix.sigil.eclipse.ui"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

   <plugin
         id="org.apache.felix.sigil.eclipse.utils"
         download-size="0"
         install-size="0"
         version="${version}"
         unpack="false"/>

</feature>
