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

   <extension-point id="testRunListeners" name="%testRunListeners.name" schema="schema/testRunListeners.exsd"/>
   <extension-point id="junitLaunchConfigs" name="%junitLaunchConfigs.name" schema="schema/junitLaunchConfigs.exsd"/>
   <extension-point id="internal_testKinds" name="%testKinds.name" schema="schema/internal_testKinds.exsd"/>

   <extension
         point="org.eclipse.ui.views">
      <view
            name="%View.label"
            icon="$nl$/icons/full/eview16/junit.gif"
            category="org.eclipse.jdt.ui.java"
            fastViewWidthRatio="0.40"
            class="org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart"
            id="org.eclipse.jdt.junit.ResultView">
      </view>
   </extension>
   <extension
         point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension
            targetID="org.eclipse.jdt.ui.JavaPerspective">
         <view
               relative="org.eclipse.jdt.ui.PackageExplorer"
               visible="false"
               id="org.eclipse.jdt.junit.ResultView"
               relationship="stack">
         </view>
         <newWizardShortcut
               id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard">
         </newWizardShortcut>
      </perspectiveExtension>
      <perspectiveExtension
            targetID="org.eclipse.jdt.ui.JavaPerspective">
         <actionSet
               id="org.eclipse.jdt.junit.JUnitActionSet">
         </actionSet>
      </perspectiveExtension>
      <perspectiveExtension
            targetID="org.eclipse.jdt.ui.JavaBrowsingPerspective">
         <actionSet
               id="org.eclipse.jdt.junit.JUnitActionSet">
         </actionSet>
         <newWizardShortcut
               id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard">
         </newWizardShortcut>
      </perspectiveExtension>
   </extension>
   <extension
         point="org.eclipse.ui.preferencePages">
      <page
            name="%PreferencePage.label"
            category="org.eclipse.jdt.ui.preferences.JavaBasePreferencePage"
            class="org.eclipse.jdt.internal.junit.ui.JUnitPreferencePage"
            id="org.eclipse.jdt.junit.preferences">
         <keywordReference id="org.eclipse.jdt.junit.JUnit"/>
      </page>
   </extension>
   <extension
         point="org.eclipse.ui.keywords">
      <keyword
            id="org.eclipse.jdt.junit.JUnit"
            label="%preferenceKeywords.general"/>
   </extension>
   <extension
         point="org.eclipse.debug.core.launchConfigurationTypes">
      <launchConfigurationType
            name="%Launch.label"
            delegate="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchConfiguration"
            modes="run, debug"
            id="org.eclipse.jdt.junit.launchconfig"
            sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
            sourcePathComputerId="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer">
         <fileExtension
               default="false"
               extension="java">
         </fileExtension>
         <fileExtension
               default="false"
               extension="class">
         </fileExtension>
      </launchConfigurationType>
   </extension>
   <extension
         point="org.eclipse.debug.core.launchConfigurationComparators">
      <launchConfigurationComparator
            attribute="org.eclipse.jdt.junit.CONTAINER"
            class="org.eclipse.jdt.internal.junit.launcher.ContainerComparator"
            id="org.eclipse.jdt.junit.containerComparator">
      </launchConfigurationComparator>
   </extension>
   <extension
         point="org.eclipse.debug.ui.launchConfigurationTypeImages">
      <launchConfigurationTypeImage
            icon="$nl$/icons/full/obj16/julaunch.gif"
            configTypeID="org.eclipse.jdt.junit.launchconfig"
            id="org.eclipse.jdt.junit.launchimage">
      </launchConfigurationTypeImage>
   </extension>
   <extension
         point="org.eclipse.debug.ui.launchConfigurationTabGroups">
      <launchConfigurationTabGroup
            type="org.eclipse.jdt.junit.launchconfig"
            helpContextId="org.eclipse.jdt.junit.junit_tab_group"
            class="org.eclipse.jdt.internal.junit.launcher.JUnitTabGroup"
            id="org.eclipse.jdt.junit.launchConfigurationTabGroup.junit">
         <launchMode
               perspective="org.eclipse.debug.ui.DebugPerspective"
               description="%JUnitTabGroupDescription.debug"
               mode="debug">
         </launchMode>
         <launchMode
               description="%JUnitTabGroupDescription.run"
               mode="run">
         </launchMode>
      </launchConfigurationTabGroup>
   </extension>
   <extension
         point="org.eclipse.ui.newWizards">
      <category
            name="%WizardCategory.name"
            parentCategory="org.eclipse.jdt.ui.java"
            id="org.eclipse.jdt.junit">
      </category>
      <wizard
            name="%TestCaseWizard.name"
            icon="$nl$/icons/full/etool16/new_testcase.gif"
            category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
            id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard">
         <class
               class="org.eclipse.jdt.internal.junit.wizards.NewTestCaseCreationWizard">
            <parameter
                  name="javatype"
                  value="true">
            </parameter>
         </class>
<!-- see bug 48164 for wrong pde compiler warnings -->
         <description>
            %TestWizard.description
         </description>
      </wizard>
      <wizard
            name="%TestSuiteWizard.name"
            icon="$nl$/icons/full/etool16/new_testsuite.gif"
            category="org.eclipse.jdt.ui.java/org.eclipse.jdt.junit"
            class="org.eclipse.jdt.internal.junit.wizards.NewTestSuiteCreationWizard"
            id="org.eclipse.jdt.junit.wizards.NewTestSuiteCreationWizard">
         <description>
            %SuiteWizard.description
         </description>
      </wizard>
   </extension>
   <extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            objectClass="org.eclipse.jdt.core.ICompilationUnit"
            nameFilter="*Tests.java"
            id="org.eclipse.jdt.junit.wizards.UpdateTestSuite">
         <action
               label="%UpdateSuiteAction.label"
               class="org.eclipse.jdt.internal.junit.wizards.UpdateTestSuite"
               tooltip="%UpdateSuiteAction.tooltip"
               enablesFor="1"
               id="updateTestSuite">
         </action>
      </objectContribution>
   </extension>
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="%JUnitActionSet.label"
            visible="false"
            id="org.eclipse.jdt.junit.JUnitActionSet">
         <menu
               label="%searchMenu.label"
               path="navigate"
               id="org.eclipse.search.menu">
				<groupMarker name="internalDialogGroup"/>   <!-- not to be used by clients  -->
				<groupMarker name="dialogGroup"/>           <!-- to be used by clients      -->
				<separator name="fileSearchContextMenuActionsGroup"/> <!-- to be used by clients      -->
	         	<separator name="contextMenuActionsGroup"/> <!-- to be used by clients -->
	         	<separator name="occurencesActionsGroup"/> <!-- to be used by clients -->
	         	<separator name="extraSearchGroup"/> <!-- to be used by clients -->
         </menu>
		<action
               definitionId="org.eclipse.jdt.junit.gotoTest"
               label="%GotoTestAction.label"
               helpContextId="org.eclipse.jdt.junit.goto_referenced_test_action_context"
               class="org.eclipse.jdt.internal.junit.ui.GotoReferencedTestAction"
               tooltip="%GotoTestAction.tooltip"
               menubarPath="org.eclipse.search.menu/extraSearchGroup"
               id="junit.actions.GotoTestAction">
         </action>
      </actionSet>
   </extension>
      <extension
         point="org.eclipse.ui.actionSetPartAssociations">
      <actionSetPartAssociation
            targetID="org.eclipse.jdt.junit.JUnitActionSet">
         <part
               id="org.eclipse.jdt.ui.PackageExplorer">
         </part>
         <part
               id="org.eclipse.jdt.ui.TypeHierarchy">
         </part>
         <part
               id="org.eclipse.jdt.ui.CompilationUnitEditor">
         </part>
         <part
               id="org.eclipse.jdt.ui.ClassFileEditor">
         </part>
         <part
               id="org.eclipse.jdt.ui.ProjectsView">
         </part>
         <part
               id="org.eclipse.jdt.ui.PackagesView">
         </part>
         <part
               id="org.eclipse.jdt.ui.TypesView">
         </part>
         <part
               id="org.eclipse.jdt.ui.MembersView">
         </part>
         <part
               id="org.eclipse.search.SearchResultView">
         </part>
      </actionSetPartAssociation>
   </extension>
   <extension
         id="junit_task"
         name="%Task.name"
         point="org.eclipse.core.resources.markers">
      <super
            type="org.eclipse.core.resources.taskmarker">
      </super>
      <persistent
            value="true">
      </persistent>
   </extension>
   <extension
         point="org.eclipse.debug.ui.launchShortcuts">
      <shortcut
            label="%JUnitShortcut.label"
            icon="$nl$/icons/full/obj16/julaunch.gif"
            helpContextId="org.eclipse.jdt.junit.launch_shortcut"
            class="org.eclipse.jdt.internal.junit.launcher.JUnitLaunchShortcut"
            modes="run, debug"
            id="org.eclipse.jdt.junit.junitShortcut">
         <contextualLaunch>
            <enablement>
               <with
                     variable="selection">
                  <count
                        value="1">
                  </count>
               		<iterate>
                 		<or>
                 			<test property="org.eclipse.jdt.launching.extendsInterface" args="junit.framework.Test"/>
                 			<test property="org.eclipse.jdt.launching.hasMethod" args="suite, ()QTest;, public static"/>
                 			<and>
                 				<test property="org.eclipse.jdt.launching.isContainer"/>
                 				<test property="org.eclipse.jdt.launching.buildpathReference" args="junit"/>
                 			</and>
                            <test property="org.eclipse.jdt.launching.hasMethodWithAnnotation" args="Test, public"/>
                            <test property="org.eclipse.jdt.launching.hasMethodWithAnnotation" args="Test, public final"/>
                 			<test property="org.eclipse.jdt.launching.hasTypeWithAnnotation" args="RunWith"/>
<!-- TODO: loads plug-in !
	                 		<test property="org.eclipse.jdt.junit.isTest"/>
 -->
                 		</or>
               		</iterate>
               </with>
            </enablement>
         </contextualLaunch>
         <perspective
               id="org.eclipse.jdt.ui.JavaPerspective">
         </perspective>
         <perspective
               id="org.eclipse.jdt.ui.JavaHierarchyPerspective">
         </perspective>
         <perspective
               id="org.eclipse.jdt.ui.JavaBrowsingPerspective">
         </perspective>
         <perspective
               id="org.eclipse.debug.ui.DebugPerspective">
         </perspective>
      </shortcut>
   </extension>
   <extension
         point="org.eclipse.jdt.core.classpathVariableInitializer">
      <classpathVariableInitializer
            variable="JUNIT_HOME"
            class="org.eclipse.jdt.internal.junit.buildpath.JUnitHomeInitializer">
      </classpathVariableInitializer>
      <classpathVariableInitializer
            variable="JUNIT_SRC_HOME"
            class="org.eclipse.jdt.internal.junit.buildpath.JUnitHomeInitializer">
      </classpathVariableInitializer>
   </extension>
   <extension
         point="org.eclipse.jdt.ui.quickFixProcessors">
      <quickFixProcessor
            name="%junitQuickFixProcessor"
            class="org.eclipse.jdt.internal.junit.ui.JUnitQuickFixProcessor"
            id="org.eclipse.jdt.junit.JUnitQuickFixProcessor">
      </quickFixProcessor>
   </extension>
   <extension
         point="org.eclipse.core.expressions.propertyTesters">
      <propertyTester
            properties="isTest"
            namespace="org.eclipse.jdt.junit"
            type="org.eclipse.core.runtime.IAdaptable"
            class="org.eclipse.jdt.internal.junit.ui.JavaTypeExtender"
            id="org.eclipse.jdt.junit.ITypeExtender">
      </propertyTester>
   </extension>
   <extension
         point="org.eclipse.ltk.core.refactoring.renameParticipants">
      <renameParticipant
            name="%RenameTypeParticipant.name"
            class="org.eclipse.jdt.internal.junit.refactoring.TypeRenameParticipant"
            id="org.eclipse.jdt.junit.renameTypeParticipant">
         <enablement>
            <with
                  variable="affectedNatures">
               <iterate operator="or">
                  <equals
                        value="org.eclipse.jdt.core.javanature">
                  </equals>
               </iterate>
            </with>
            <with
                  variable="element">
               <instanceof
                     value="org.eclipse.jdt.core.IType">
               </instanceof>
               <test
                     property="org.eclipse.jdt.junit.isTest">
               </test>
            </with>
         </enablement>
      </renameParticipant>
      <renameParticipant
            class="org.eclipse.jdt.internal.junit.refactoring.ProjectRenameParticipant"
            name="%junitRenameParticipant"
            id="org.eclipse.jdt.junit.renameTypeParticipant">
         <enablement>
           <with variable="affectedNatures">
             <iterate operator="or">
               <equals value="org.eclipse.jdt.core.javanature"/>
             </iterate>
           </with>
           <with variable="element">
   	         <instanceof value="org.eclipse.jdt.core.IJavaProject"/>
           </with>
         </enablement>
      </renameParticipant>
      
   </extension>
   <extension
         point="org.eclipse.jdt.junit.junitLaunchConfigs">
      <launchConfigType
            configTypeID="org.eclipse.jdt.junit.launchconfig">
      </launchConfigType>
   </extension>

   <extension
         point="org.eclipse.ui.commands">
      <command
         name="%GotoTestCommand.name"
         description="%GotoTestCommand.description"
         categoryId="org.eclipse.search.ui.category.search"
         id="org.eclipse.jdt.junit.gotoTest">
      </command>
      <command
            name="%ViewCommand.junitView.name"
            description="%ViewCommand.junitView.description"
            categoryId="org.eclipse.ui.category.views"
            id="org.eclipse.jdt.junit.ResultView">
      </command>
      
      <command
            name="%JUnitShortcut.description.run"
            description="%JUnitShortcut.description.run"
            categoryId="org.eclipse.debug.ui.category.run"
            id="org.eclipse.jdt.junit.junitShortcut.run">
      </command>
      <command
            name="%JUnitShortcut.description.debug"
            description="%JUnitShortcut.description.debug"
            categoryId="org.eclipse.debug.ui.category.run"
            id="org.eclipse.jdt.junit.junitShortcut.debug">
      </command>
   </extension>
   
   <extension
         point="org.eclipse.ui.bindings">
      <key
            sequence="M3+M2+D T"
            commandId="org.eclipse.jdt.junit.junitShortcut.debug"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
	  <!-- COMMAND+ALT+Q is "Hide/Show Dock" on carbon, so don't overwrite it -->
      <key
            sequence="M3+M2+X T"
            commandId="org.eclipse.jdt.junit.junitShortcut.run"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
   </extension>
   
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer class="org.eclipse.jdt.internal.junit.ui.JunitPreferenceInitializer"/>
   </extension>
   
    <!-- JUnit Container -->
   
   <extension
      point="org.eclipse.jdt.core.classpathContainerInitializer">
      <classpathContainerInitializer
            class="org.eclipse.jdt.internal.junit.buildpath.JUnitContainerInitializer"
            id="org.eclipse.jdt.junit.JUNIT_CONTAINER">
      </classpathContainerInitializer>
   </extension>
   
   <extension
         point="org.eclipse.jdt.ui.classpathContainerPage">
      <classpathContainerPage
            name="%JUnitContainerName"
            class="org.eclipse.jdt.internal.junit.buildpath.JUnitContainerWizardPage"
            id="org.eclipse.jdt.junit.JUNIT_CONTAINER">
      </classpathContainerPage>
   </extension>
   
   <extension
         point="org.eclipse.jdt.junit.internal_testKinds">
      <kind
            id="org.eclipse.jdt.junit.loader.junit3"
            displayName="%testKind.junit3"
            finderClass="org.eclipse.jdt.internal.junit.launcher.JUnit3TestFinder"
            loaderPluginId="org.eclipse.jdt.junit.runtime"
            loaderClass="org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader">
         <runtimeClasspathEntry pluginId="org.eclipse.jdt.junit" pathToJar="junitsupport.jar" />     	
         <runtimeClasspathEntry pluginId="org.eclipse.jdt.junit.runtime" pathToJar="junitruntime.jar" />     	
      </kind>
   </extension>
   <extension
         point="org.eclipse.jdt.junit.internal_testKinds">
      <kind
            id="org.eclipse.jdt.junit.loader.junit4"
            displayName="%testKind.junit4" 
            finderClass="org.eclipse.jdt.internal.junit.launcher.JUnit4TestFinder"
            loaderPluginId="org.eclipse.jdt.junit4.runtime"
            loaderClass="org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader">
         <runtimeClasspathEntry pluginId="org.eclipse.jdt.junit4.runtime" />
         <!-- TODO: do we need these? -->
         <runtimeClasspathEntry pluginId="org.eclipse.jdt.junit" pathToJar="junitsupport.jar" />     	
         <runtimeClasspathEntry pluginId="org.eclipse.jdt.junit.runtime" pathToJar="junitruntime.jar" />     	
         <!-- END : do we need these? -->
      </kind>
   </extension>
   
</plugin>
