<?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.v1_1.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.v1_1.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>
   			<newWizardShortcut
         		id="org.eclipse.jpt.eclipselink.ui.wizard.newEclipseLink1_1MappingFile">
   			</newWizardShortcut>
		</perspectiveExtension>
		
	</extension>
	
</plugin>
