<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?><!--
     Copyright (c) 2010  Oracle. All rights reserved.
     This program and the accompanying materials are made available under the
     terms of the Eclipse Public License v1.0, which accompanies this distribution
     and is available at http://www.eclipse.org/legal/epl-v10.html
     
     Contributors: 
     	Oracle - initial API and implementation
 -->

<plugin>
	
	<extension-point 
		id="jaxbPlatformUis" 
		name="%jaxbPlatformUi" 
		schema="schema/jaxbPlatformUis.exsd"/>
	
	
	<extension 
		point="org.eclipse.core.runtime.adapters">
		
		<factory 
			class="org.eclipse.jpt.jaxb.ui.internal.wizards.facet.model.JaxbFacetInstallConfigToDataModelAdapterFactory" 
			adaptableType="org.eclipse.jpt.jaxb.core.internal.facet.JaxbFacetInstallConfig">
			<adapter type="org.eclipse.wst.common.frameworks.datamodel.IDataModel"/>
		</factory>
		
		<factory 
			class="org.eclipse.jpt.jaxb.ui.internal.wizards.facet.model.JaxbFacetVersionChangeConfigToDataModelAdapterFactory" 
			adaptableType="org.eclipse.jpt.jaxb.core.internal.facet.JaxbFacetVersionChangeConfig">
			<adapter type="org.eclipse.wst.common.frameworks.datamodel.IDataModel"/>
		</factory>
		
	</extension>
  
  
	<extension
		point="org.eclipse.ui.newWizards">

		<category
			id="org.eclipse.jpt.jaxb"
			name="%jaxbWizardCategoryName"/>

 		<wizard
            id="org.eclipse.jpt.jaxb.ui.wizard.generateSchemaFromClasses"
			name="%generateSchemaFromClassesName"
 			category="org.eclipse.jpt.jaxb"
 			class="org.eclipse.jpt.jaxb.ui.internal.wizards.schemagen.SchemaGeneratorWizard"
			icon="icons/full/etool16/NewXSD.gif">
				<description>%generateSchemaFromClassesDesc</description>
				<selection class="org.eclipse.core.resources.IResource"/> 
		</wizard>

 		<wizard
            id="org.eclipse.jpt.jaxb.ui.wizard.generateJAXBClasses"
			name="%generateClassesFromSchemaName"
 			category="org.eclipse.jpt.jaxb"
 			class="org.eclipse.jpt.jaxb.ui.internal.wizards.classesgen.ClassesGeneratorWizard"
			icon="icons/full/etool16/newclass_wiz.gif">
				<description>%generateClassesFromSchemaDesc</description>
		</wizard>

		<!-- will need to specify a final perspective once we have a jaxb perspective -->
		<wizard
			id="org.eclipse.jpt.jaxb.ui.wizard.newJaxbProject"
			name="%newJaxbProjectWizardName"
			icon="icons/full/etool16/new_jaxb_project_wiz.gif"
			category="org.eclipse.jpt.jaxb"
			project="true">
			<description>%newJaxbProjectWizardDesc</description>
			<class class="org.eclipse.jpt.jaxb.ui.internal.wizards.proj.JaxbProjectWizard"> 
				<parameter name="menuIndex" value="35"/> 
			</class>
		</wizard>
		
	</extension>
	
	
	<extension
		point="org.eclipse.jpt.jaxb.ui.jaxbPlatformUis">
		
		<jaxbPlatformUi
			id="generic_2_1.ui"
			jaxbPlatform="generic_2_1"
			class="org.eclipse.jpt.jaxb.ui.internal.jaxb21.GenericJaxb_2_1_PlatformUi"/>
		
		<jaxbPlatformUi
			id="generic_2_2.ui"
			jaxbPlatform="generic_2_2"
			class="org.eclipse.jpt.jaxb.ui.internal.jaxb22.GenericJaxb_2_2_PlatformUi"/>
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.navigator.navigatorContent">
		
		<navigatorContent
			id="org.eclipse.jpt.jaxb.ui.jaxbNavigatorContent"
			name="%jaxbNavigatorContent"
			priority="higher"
			appearsBefore="org.eclipse.jst.servlet.ui.EnhancedJavaRendering"
			icon="icons/full/obj16/jaxb_content.gif"
			activeByDefault="true"
			contentProvider="org.eclipse.jpt.jaxb.ui.internal.navigator.JaxbNavigatorContentProvider"
			labelProvider="org.eclipse.jpt.jaxb.ui.internal.navigator.JaxbNavigatorLabelProvider">
			
			<triggerPoints>
				<or>
					<instanceof
						value="org.eclipse.jpt.jaxb.core.context.JaxbContextNode"/>
					<and>
						<adapt type="org.eclipse.core.resources.IProject"> 
							<test 
								forcePluginActivation="true"
								property="org.eclipse.wst.common.project.facet.core.projectFacet"
								value="jpt.jaxb" />
						</adapt>
					</and>
				</or>
			</triggerPoints>
			
			<possibleChildren>
				<instanceof
					value="org.eclipse.jpt.jaxb.core.context.JaxbContextNode"/>
			</possibleChildren>
			
			<!--
			<actionProvider
				class="org.eclipse.jpt.ui.internal.navigator.JpaNavigatorActionProvider"
				id="org.eclipse.jpt.ui.jpaActionProvider">
				<enablement>
					<and>
						<instanceof
							value="org.eclipse.jpt.core.context.JpaContextNode"/>
					</and>
				</enablement>
			</actionProvider>
			-->
			
			<!--
			<commonSorter
				id="org.eclipse.jst.j2ee.navigator.internal.J2EEViewerSorter"
				class="org.eclipse.jst.j2ee.navigator.internal.J2EEViewerSorter" />
			-->
			
		</navigatorContent>
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.navigator.viewer">
		
		<viewerContentBinding
			viewerId="org.eclipse.ui.navigator.ProjectExplorer">
			<includes>
				<contentExtension pattern="org.eclipse.jpt.jaxb.ui.*"/>
			</includes>
		</viewerContentBinding>
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.popupMenus">

		<!-- contributions to the "Generate" submenu -->
		<objectContribution
			id="org.eclipse.jpt.ui.xsdFileActions"
			objectClass="org.eclipse.core.resources.IFile"
			nameFilter="*.xsd">
			<filter
				name="projectNature"
				value="org.eclipse.jdt.core.javanature">
			</filter>
			<action
				id="org.eclipse.jpt.jaxb.ui.generateJaxbClasses" 
				label="%generateJaxbClasses"
				menubarPath="generateMenuId/GenerateXML"
				class="org.eclipse.jpt.jaxb.ui.internal.actions.GenerateClassesAction"> 
			</action> 
		</objectContribution>
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.preferencePages">
		
		<!-- no actual preferences yet
		<page
			id="org.eclipse.jpt.jaxb.ui.jaxbPreferences"
			category="org.eclipse.jpt.ui.preferences"
			class="org.eclipse.jpt.jaxb.ui.internal.preferences.JaxbPreferencesPage"
			name="%jaxbNode"/>
		-->
		
		<!--
		<page
			id="org.eclipse.jpt.jaxb.ui.jaxbProblemSeveritiesPreferences"
			category="org.eclipse.jpt.jaxb.ui.jaxbPreferences"
			class="org.eclipse.jpt.jaxb.ui.internal.preferences.JaxbProblemSeveritiesPage"
			name="%jaxbProblemSeveritiesNode">
		</page>
		-->
		
	</extension>
	
	
	<extension
		point="org.eclipse.ui.propertyPages">
		
		<page
			id="org.eclipse.jpt.jaxb.ui.jaxbProjectProperties"
			name="%jaxbNode"
			class="org.eclipse.jpt.jaxb.ui.internal.properties.JaxbProjectPropertiesPage">
			<enabledWhen>
				<adapt type="org.eclipse.core.resources.IProject">
					<test 
						forcePluginActivation="true"
						property="org.eclipse.wst.common.project.facet.core.projectFacet"
						value="jpt.jaxb"/>
				</adapt>
			</enabledWhen>
		</page>
		
		<!--
		<page
			id="org.eclipse.jpt.ui.jaxbProblemSeveritiesProperties"
			name="%jaxbProblemSeveritiesNode"
			category="org.eclipse.jpt.jaxb.ui.jaxbProjectProperties"
			class="org.eclipse.jpt.jaxb.ui.internal.preferences.JaxbProblemSeveritiesPage">
			<enabledWhen>
				<adapt type="org.eclipse.core.resources.IProject">
					<test
						forcePluginActivation="true"
						property="org.eclipse.wst.common.project.facet.core.projectFacet"
						value="jpt.jaxb"/>
				</adapt>
			</enabledWhen>
		</page>
		-->
		
	</extension>
	
	
	<extension
		point="org.eclipse.wst.common.project.facet.ui.images">
		
		<image facet="jpt.jaxb" path="icons/full/etool16/jaxb_facet.gif"/>
		
	</extension>
	
	
	<extension 
		point="org.eclipse.wst.common.project.facet.ui.wizardPages">
		
		<wizard-pages action="jpt.jaxb.install">
			<page class="org.eclipse.jpt.jaxb.ui.internal.wizards.facet.JaxbFacetInstallPage"/>
		</wizard-pages>
		
		<wizard-pages action="jpt.jaxb.version-change">
			<page class="org.eclipse.jpt.jaxb.ui.internal.wizards.facet.JaxbFacetVersionChangePage"/>
		</wizard-pages>
		
	</extension>
 	
</plugin>
