<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?><!--
    <copyright>
   
    Copyright (c) 2005, 2010 SAP AG.
    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:
       SAP AG - initial API, implementation and documentation
   
    </copyright>
   
 -->

<plugin>

   <extension
         point="org.eclipse.graphiti.ui.diagramTypes">
      <diagramType
            description="This is the diagram type for the Graphiti tutorial"
            id="org.eclipse.graphiti.examples.tutorial.diagram.TutorialDiagramType"
            name="Graphiti Tutorial Diagram Type"
            type="tutorial">
      </diagramType>
   </extension>
   
   <extension
         point="org.eclipse.graphiti.ui.diagramTypeProviders">
      <diagramTypeProvider
            class="org.eclipse.graphiti.examples.tutorial.diagram.TutorialDiagramTypeProvider"
            description="This is the editor for the Graphiti tutorial"
            id="org.eclipse.graphiti.examples.tutorial.diagram.TutorialDiagramTypeProvider"
            name="Graphiti Tutorial Editor">
         <diagramType
               id="org.eclipse.graphiti.examples.tutorial.diagram.TutorialDiagramType">
         </diagramType>
         <imageProvider
               id="org.eclipse.graphiti.examples.tutorial.TutorialImageProvider">
         </imageProvider>
         <imageProvider
               id="org.eclipse.graphiti.examples.common.ExampleImageProvider">
         </imageProvider>
      </diagramTypeProvider>
   </extension>
   
   <extension
         point="org.eclipse.graphiti.ui.imageProviders">
      <imageProvider
            class="org.eclipse.graphiti.examples.tutorial.TutorialImageProvider"
            id="org.eclipse.graphiti.examples.tutorial.TutorialImageProvider">
      </imageProvider>
   </extension>
 
	<extension
	    point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
	    <propertyContributor contributorId="tutorial.PropertyContributor">
	        <propertyCategory category="Graphiti">
	        </propertyCategory>
	    </propertyContributor>
	</extension>
	 
	<extension
	    point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
	    <propertyTabs contributorId="tutorial.PropertyContributor">
	        <propertyTab label="Main" category="Graphiti" 
	            id="graphiti.main.tab">
	        </propertyTab>
	    </propertyTabs>
	</extension>
	 
	<extension
	    point="org.eclipse.ui.views.properties.tabbed.propertySections">
	    <propertySections contributorId="tutorial.PropertyContributor">
	        <propertySection tab="graphiti.main.tab"            
	         class="org.eclipse.graphiti.examples.tutorial.property.TutorialEClassSection"
	         filter="org.eclipse.graphiti.examples.tutorial.property.TutorialEClassFilter"
	         id="graphiti.main.tab.emfclass">
	        </propertySection>
	    </propertySections>
	</extension>
 
	<extension point="org.eclipse.ui.commands">
		<command id="org.eclipse.graphiti.examples.tutorial.commands.createDiagramWithAllClasses" name="Create Diagram with all Classes" /> 
	</extension>

	<extension point="org.eclipse.ui.handlers">
		<handler commandId="org.eclipse.graphiti.examples.tutorial.commands.createDiagramWithAllClasses" class="org.eclipse.graphiti.examples.tutorial.handlers.CreateDiagramWithAllClassesHandler">
			<enabledWhen>
				<reference definitionId="org.eclipse.graphiti.examples.tutorial.definitions.OneEClassesNodeSelected" /> 
			</enabledWhen>
			<activeWhen>
				<reference definitionId="org.eclipse.graphiti.examples.tutorial.definitions.OneEClassesNodeSelected" /> 
			</activeWhen>
		</handler>
	</extension>

	<extension point="org.eclipse.ui.menus">
		<menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
			<command commandId="org.eclipse.graphiti.examples.tutorial.commands.createDiagramWithAllClasses">
					id="org.eclipse.graphiti.examples.tutorial.menus.createDiagramWithAllClasses"> 
				<visibleWhen>
					<reference definitionId="org.eclipse.graphiti.examples.tutorial.definitions.OneEClassesNodeSelected" /> 
				</visibleWhen>
			</command>
		</menuContribution>
	</extension>

	<extension point="org.eclipse.core.expressions.definitions">
		<definition id="org.eclipse.graphiti.examples.tutorial.definitions.OneEClassesNodeSelected">
			<and>
				<count value="1" /> 
				<iterate ifEmpty="false" operator="and">
					<instanceof value="org.eclipse.graphiti.examples.common.navigator.nodes.EClassesNode" /> 
				</iterate>
			</and>
		</definition>
	</extension>
	
</plugin>
 
