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

	<extension
		point="org.eclipse.jpt.ui.jpaPlatformUis">
		 
		<jpaPlatformUi
			id="org.eclipse.eclipselink.platform.ui"
			jpaPlatform="org.eclipse.eclipselink.platform"
			factoryClass="org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLinkJpaPlatformUiFactory"/>
			
		<jpaPlatformUi
			id="eclipselink1_1.ui"
			jpaPlatform="eclipselink1_1"
			factoryClass="org.eclipse.jpt.eclipselink.ui.internal.platform.EclipseLink1_1JpaPlatformUiFactory"/>
		
	</extension>
   
   
   <extension
		point="org.eclipse.ui.newWizards">
		
		<category
			id="org.eclipse.jpt.eclipselink"
			name="%eclipseLinkWizardCategoryName"
			parentCategory="org.eclipse.jpt"/>
		
		<wizard
            id="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLinkMappingFile"
			name="%newEclipseLinkMappingFileWizardName"
			icon="platform:/plugin/org.eclipse.jpt.ui/icons/full/etool16/new_jpa_file_wiz.gif"
			category="org.eclipse.jpt/org.eclipse.jpt.eclipselink">
			<description>%newEclipseLinkJpaMappingFileWizardDesc</description>
			<class class="org.eclipse.jpt.eclipselink.ui.internal.wizards.EclipseLinkMappingFileWizard"> 
				<parameter name="javaeeartifact" value="true"/> 
				<parameter name="menuIndex" value="40" /> 
				<parameter name="jptartifact" value="true"/> 
			</class> 
		</wizard>
  <wizard
        category="org.eclipse.jpt/org.eclipse.jpt.eclipselink"
        icon="platform:/plugin/org.eclipse.jpt.ui/icons/full/etool16/new_jpa_file_wiz.gif"
        id="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLink1_1MappingFile"
        name="%newEclipseLink1_1MappingFileWizardName">
     <description>
        %newEclipseLink1_1JpaMappingFileWizardDesc
     </description>
     <class
           class="org.eclipse.jpt.eclipselink.ui.internal.wizards.EclipseLink1_1MappingFileWizard">
        <parameter
              name="javaeeartifact"
              value="true">
        </parameter>
        <parameter
              name="menuIndex"
              value="40">
        </parameter>
        <parameter
              name="jptartifact"
              value="true">
        </parameter>
     </class>
  </wizard>
      
	</extension>


	<extension
		point="org.eclipse.ui.navigator.navigatorContent">
		
		<commonWizard
			menuGroupId="org.eclipse.jpt.ui"
			type="new"
			wizardId="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLinkMappingFile">
			<enablement>
				<and>
					<or>
						<instanceof value="org.eclipse.core.resources.IProject"/>
                    	<instanceof value="org.eclipse.core.resources.IFolder"/>
						<instanceof value="org.eclipse.jdt.core.IPackageFragmentRoot"/>
						<instanceof value="org.eclipse.jdt.core.IPackageFragment"/>
					</or>
					<adapt type="org.eclipse.core.resources.IResource">
						<test 
							forcePluginActivation="true"
							property="org.eclipse.wst.common.project.facet.core.projectFacet"
							value="jpt.jpa" />
					</adapt>
     <or>
        <test
              property="org.eclipse.jpt.core.jpaPlatform"
              value="org.eclipse.eclipselink.platform">
        </test>
        <test
              property="org.eclipse.jpt.core.jpaPlatform"
              value="eclipselink1_1">
        </test>
     </or>
				</and>
			</enablement>
		</commonWizard>
  <commonWizard
        menuGroupId="org.eclipse.jpt.ui"
        type="new"
        wizardId="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLink1_1MappingFile">
     <enablement>
        <and>
           <or>
              <instanceof
                    value="org.eclipse.core.resources.IProject">
              </instanceof>
              <instanceof
                    value="org.eclipse.core.resources.IFolder">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IPackageFragmentRoot">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IPackageFragment">
              </instanceof>
           </or>
           <adapt
                 type="org.eclipse.core.resources.IResource">
              <test
                    forcePluginActivation="true"
                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
                    value="jpt.jpa">
              </test>
           </adapt>
           <test
                 property="org.eclipse.jpt.core.jpaPlatform"
                 value="eclipselink1_1">
           </test>
        </and>
     </enablement>
  </commonWizard>
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.perspectiveExtensions">
		
		<perspectiveExtension
			targetID="org.eclipse.jpt.ui.jpaPerspective">
			<newWizardShortcut
				id="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLinkMappingFile">
			</newWizardShortcut>
		</perspectiveExtension>
		
	</extension>
	
</plugin>
