<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2014 Alexey Andreev.

    Licensed 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.
-->
<?eclipse version="3.0"?>
<plugin>
  <extension point="org.eclipse.debug.core.launchConfigurationTypes">
    <launchConfigurationType
        sourceLocatorId="teavm-eclipse-plugin.debugger.sourceLookup"
        name="TeaVM remote"
        sourcePathComputerId="teavm-eclipse-plugin.debugger.sourcePath"
        delegate="org.teavm.eclipse.debugger.TeaVMLaunchConfigurationDelegate"
        modes="debug"
        id="teavm-eclipse-plugin.debugger.launchConfig">
    </launchConfigurationType>
  </extension>
  <extension point="org.eclipse.debug.core.sourceLocators">
    <sourceLocator
        name="TeaVM Source Lookup Director"
        class="org.teavm.eclipse.debugger.TeaVMSourceLookupDirector"
        id="teavm-eclipse-plugin.debugger.sourceLookup">
    </sourceLocator>
  </extension>
  <extension point="org.eclipse.debug.core.sourcePathComputers">
    <sourcePathComputer
        class="org.teavm.eclipse.debugger.TeaVMSourcePathComputerDelegate"
        id="teavm-eclipse-plugin.debugger.sourcePath">
    </sourcePathComputer>
  </extension>
  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
    <launchConfigurationTabGroup
        type="teavm-eclipse-plugin.debugger.launchConfig"
        description="Debug TeaVM program"
        class="org.teavm.eclipse.debugger.ui.TeaVMTabGroup"
        id="teavm-eclipse-plugin.debugger.ui.tabs">
    </launchConfigurationTabGroup>
  </extension>
  <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
    <launchConfigurationTypeImage
        id="teavm-eclipse-plugin.debugger.ui.launchConfigIcon"
        configTypeID="teavm-eclipse-plugin.debugger.launchConfig"
        icon="teavm-16.png">
    </launchConfigurationTypeImage>
  </extension>
  <extension point="org.eclipse.debug.ui.debugModelPresentations">
    <debugModelPresentation
        class="org.teavm.eclipse.debugger.ui.TeaVMDebugModelPresentation"
        id="teavm-eclipse-plugin.debugger">
    </debugModelPresentation>
  </extension>

  <extension point="org.eclipse.core.resources.natures" id="nature" name="TeaVM nature">
    <runtime>
      <run class="org.teavm.eclipse.TeaVMProjectNature"/>
    </runtime>
    <builder id="teavm-eclipse-plugin.builder"/>
  </extension>
  <extension point="org.eclipse.ui.propertyPages">
    <page id="teavm-eclipse-plugin.projectProperties" name="TeaVM" class="org.teavm.eclipse.ui.TeaVMProjectPropertyPage">
      <enabledWhen>
        <or>
          <instanceof value="org.eclipse.core.resources.IProject"/>
          <instanceof value="org.eclipse.jdt.core.IJavaProject"/>
        </or>
      </enabledWhen>
    </page>
  </extension>
  <extension point="org.eclipse.core.resources.builders" id="builder" name="TeaVM builder">
    <builder hasNature="true">
      <run class="org.teavm.eclipse.TeaVMProjectBuilder"/>
    </builder>
  </extension>

  <extension id="problemMarker" point="org.eclipse.core.resources.markers" name="TeaVM problem">
    <super type="org.eclipse.core.resources.problemmarker"/>
    <persistent value="true"/>
    <attribute name="severity"/>
    <attribute name="message"/>
    <attribute name="lineNumber"/>
    <attribute name="teavm-eclipse-plugin.problemMarker.project"/>
    <attribute name="teavm-eclipse-plugin.problemMarker.profile"/>
  </extension>
  <extension id="configMarker" point="org.eclipse.core.resources.markers" name="TeaVM configuration problem">
    <super type="org.eclipse.core.resources.problemmarker"/>
    <persistent value="true"/>
    <attribute name="severity"/>
    <attribute name="message"/>
  </extension>
</plugin>