add linklabel test sample
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore
new file mode 100644
index 0000000..7985f5e
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/xtend-gen
+*.java._trace
\ No newline at end of file
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project
new file mode 100644
index 0000000..d9412f2
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmf.tooling.examples.linklabels</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs
new file mode 100644
index 0000000..ee8d801
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+generate_rcp=false
+ignore_gmfgen_validation=false
+ignore_mapmodel_validation=false
+use_in_transfo_code_gen=false
+use_map_mode=true
+use_runtime_figures=true
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
new file mode 100644
index 0000000..2728541
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+gmf_dashboard/domainGenerationModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
+gmf_dashboard/domainModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
+gmf_dashboard/graphicalDefinitionModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
+gmf_dashboard/mappingModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
+gmf_dashboard/toolingDefinitionModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bc15d97
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmf.tooling.examples.linklabels;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.gmf.tooling.examples.linklabels,
+ org.eclipse.gmf.tooling.examples.linklabels.impl,
+ org.eclipse.gmf.tooling.examples.linklabels.util
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html
new file mode 100644
index 0000000..c258ef5
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties
new file mode 100644
index 0000000..4465407
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
new file mode 100644
index 0000000..98cdc6e
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="linklabels" nsURI="http://org.eclipse.gmf.tooling.examples.linklabels"
+ nsPrefix="linklabels">
+ <eClassifiers xsi:type="ecore:EClass" name="Canvas">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
+ eType="#//CanvasElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CanvasElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//CanvasElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="LabeledLink" eSuperTypes="#//CanvasElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="semanticLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="Target"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fixedLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="oclLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//CanvasElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//CanvasElement"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
new file mode 100644
index 0000000..967deb4
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.gmf.tooling.examples.linklabels/src"
+ modelPluginID="org.eclipse.gmf.tooling.examples.linklabels" modelName="Linklabels"
+ rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="6.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
+ <foreignModel>linklabels.ecore</foreignModel>
+ <genPackages prefix="Linklabels" basePackage="org.eclipse.gmf.tooling.examples"
+ disposableProviderFactory="true" ecorePackage="linklabels.ecore#/">
+ <genClasses ecoreClass="linklabels.ecore#//Canvas">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference linklabels.ecore#//Canvas/elements"/>
+ </genClasses>
+ <genClasses ecoreClass="linklabels.ecore#//CanvasElement"/>
+ <genClasses ecoreClass="linklabels.ecore#//Node"/>
+ <genClasses ecoreClass="linklabels.ecore#//LabeledLink">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/semanticLabel"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/fixedLabel"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/oclLabel"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linklabels.ecore#//LabeledLink/source"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linklabels.ecore#//LabeledLink/target"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen
new file mode 100644
index 0000000..b180938
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfgen:GenEditorGenerator
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:gmfgen="http://www.eclipse.org/gmf/2009/GenModel">
+ <diagram
+ visualID="1000"
+ editPartClassName="CanvasEditPart"
+ itemSemanticEditPolicyClassName="CanvasItemSemanticEditPolicy"
+ canonicalEditPolicyClassName="CanvasCanonicalEditPolicy"
+ iconProviderPriority="Low"
+ validationProviderPriority="Low">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
+ <elementType
+ xsi:type="gmfgen:MetamodelType"
+ editHelperClassName="CanvasEditHelper"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <figureModel
+ href="linklabels.gmfgraph#linklabels"/>
+ </viewmap>
+ <domainDiagramElement
+ href="linklabels.genmodel#//linklabels/Canvas"/>
+ <topLevelNodes
+ visualID="2001"
+ editPartClassName="NodeEditPart"
+ itemSemanticEditPolicyClassName="NodeItemSemanticEditPolicy"
+ notationViewFactoryClassName="NodeViewFactory"
+ canonicalEditPolicyClassName="NodeCanonicalEditPolicy"
+ graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy"
+ createCommandClassName="NodeCreateCommand">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+ <elementType
+ xsi:type="gmfgen:MetamodelType"
+ editHelperClassName="NodeEditHelper"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <figureModel
+ href="linklabels.gmfgraph#Node"/>
+ </viewmap>
+ <modelFacet>
+ <metaClass
+ href="linklabels.genmodel#//linklabels/Node"/>
+ <containmentMetaFeature
+ href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+ <childMetaFeature
+ href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+ </modelFacet>
+ </topLevelNodes>
+ <links
+ visualID="4001"
+ editPartClassName="LabeledLinkEditPart"
+ itemSemanticEditPolicyClassName="LabeledLinkItemSemanticEditPolicy"
+ notationViewFactoryClassName="LabeledLinkViewFactory"
+ createCommandClassName="LabeledLinkCreateCommand"
+ reorientCommandClassName="LabeledLinkReorientCommand">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
+ <elementType
+ xsi:type="gmfgen:MetamodelType"
+ editHelperClassName="LabeledLinkEditHelper"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <figureModel
+ href="linklabels.gmfgraph#LabeledLink"/>
+ </viewmap>
+ <modelFacet
+ xsi:type="gmfgen:TypeLinkModelFacet">
+ <metaClass
+ href="linklabels.genmodel#//linklabels/LabeledLink"/>
+ <containmentMetaFeature
+ href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+ <childMetaFeature
+ href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+ <modelElementInitializer
+ xsi:type="gmfgen:GenFeatureSeqInitializer">
+ <initializers
+ xsi:type="gmfgen:GenFeatureValueSpec"
+ value="//@expressionProviders/@providers.0/@expressions.0">
+ <feature
+ href="linklabels.genmodel#//linklabels/LabeledLink/fixedLabel"/>
+ </initializers>
+ </modelElementInitializer>
+ <sourceMetaFeature
+ href="linklabels.genmodel#//linklabels/LabeledLink/source"/>
+ <targetMetaFeature
+ href="linklabels.genmodel#//linklabels/LabeledLink/target"/>
+ </modelFacet>
+ <labels
+ visualID="6001"
+ editPartClassName="LabeledLinkFixedLabelEditPart"
+ itemSemanticEditPolicyClassName="LabeledLinkFixedLabelItemSemanticEditPolicy"
+ notationViewFactoryClassName="LabeledLinkFixedLabelViewFactory"
+ readOnly="true"
+ elementIcon="true">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <attributes
+ xsi:type="gmfgen:LabelOffsetAttributes"
+ y="40"/>
+ <figureModel
+ href="linklabels.gmfgraph#LabeledLinkFixedLabel"/>
+ </viewmap>
+ <modelFacet
+ xsi:type="gmfgen:FeatureLabelModelFacet"
+ parser="//@labelParsers/@implementations.0">
+ <metaFeatures
+ href="linklabels.genmodel#//linklabels/LabeledLink/fixedLabel"/>
+ </modelFacet>
+ </labels>
+ <labels
+ visualID="6002"
+ editPartClassName="LabeledLinkSemanticLabelEditPart"
+ itemSemanticEditPolicyClassName="LabeledLinkSemanticLabelItemSemanticEditPolicy"
+ notationViewFactoryClassName="LabeledLinkSemanticLabelViewFactory"
+ elementIcon="true"
+ alignment="SOURCE">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <attributes
+ xsi:type="gmfgen:LabelOffsetAttributes"
+ y="60"/>
+ <figureModel
+ href="linklabels.gmfgraph#LabeledLinkSemanticLabel"/>
+ </viewmap>
+ <modelFacet
+ xsi:type="gmfgen:FeatureLabelModelFacet"
+ parser="//@labelParsers/@implementations.0">
+ <metaFeatures
+ href="linklabels.genmodel#//linklabels/LabeledLink/semanticLabel"/>
+ </modelFacet>
+ </labels>
+ <labels
+ visualID="6003"
+ editPartClassName="LabeledLinkLabelEditPart"
+ itemSemanticEditPolicyClassName="LabeledLinkLabelItemSemanticEditPolicy"
+ notationViewFactoryClassName="LabeledLinkLabelViewFactory"
+ elementIcon="true"
+ alignment="TARGET">
+ <diagramRunTimeClass
+ href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+ <viewmap
+ xsi:type="gmfgen:ModeledViewmap">
+ <attributes
+ xsi:type="gmfgen:LabelOffsetAttributes"
+ y="80"/>
+ <figureModel
+ href="linklabels.gmfgraph#LabeledLinkOclLabel"/>
+ </viewmap>
+ <modelFacet
+ xsi:type="gmfgen:ExpressionLabelModelFacet"
+ parser="//@labelParsers/@implementations.1"/>
+ </labels>
+ </links>
+ <palette>
+ <groups
+ title="linklabels">
+ <entries
+ xsi:type="gmfgen:ToolEntry"
+ title="Node"
+ description="Create new Node"
+ genNodes="//@diagram/@topLevelNodes.0"/>
+ <entries
+ xsi:type="gmfgen:ToolEntry"
+ title="LabeledLink"
+ description="Create new LabeledLink"
+ genLinks="//@diagram/@links.0"/>
+ </groups>
+ </palette>
+ <preferencePages
+ xsi:type="gmfgen:GenStandardPreferencePage"
+ iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.general"
+ name="Linklabels Diagram">
+ <children
+ xsi:type="gmfgen:GenStandardPreferencePage"
+ iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.appearance"
+ name="Appearance"
+ kind="Appearance"/>
+ <children
+ xsi:type="gmfgen:GenStandardPreferencePage"
+ iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.connections"
+ name="Connections"
+ kind="Connections"/>
+ <children
+ xsi:type="gmfgen:GenStandardPreferencePage"
+ iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.printing"
+ name="Printing"
+ kind="Printing"/>
+ <children
+ xsi:type="gmfgen:GenStandardPreferencePage"
+ iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.rulersAndGrid"
+ name="Rulers And Grid"
+ kind="RulersAndGrid"/>
+ </preferencePages>
+ </diagram>
+ <plugin>
+ <requiredPlugins>org.eclipse.gmf.tooling.runtime</requiredPlugins>
+ </plugin>
+ <editor/>
+ <navigator>
+ <childReferences
+ child="//@diagram"/>
+ <childReferences
+ parent="//@diagram"
+ child="//@diagram/@topLevelNodes.0"/>
+ <childReferences
+ parent="//@diagram"
+ child="//@diagram/@links.0"
+ groupName="links"
+ groupIcon="icons/linksNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@topLevelNodes.0"
+ referenceType="out_target"
+ groupName="target"
+ groupIcon="icons/linkTargetNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@topLevelNodes.0"
+ child="//@diagram/@links.0"
+ referenceType="in_source"
+ groupName="incoming links"
+ groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@links.0"
+ referenceType="out_target"
+ groupName="target"
+ groupIcon="icons/linkTargetNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@links.0"
+ referenceType="in_source"
+ groupName="incoming links"
+ groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@topLevelNodes.0"
+ referenceType="in_source"
+ groupName="source"
+ groupIcon="icons/linkSourceNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@topLevelNodes.0"
+ child="//@diagram/@links.0"
+ referenceType="out_target"
+ groupName="outgoing links"
+ groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@links.0"
+ referenceType="in_source"
+ groupName="source"
+ groupIcon="icons/linkSourceNavigatorGroup.gif"/>
+ <childReferences
+ parent="//@diagram/@links.0"
+ child="//@diagram/@links.0"
+ referenceType="out_target"
+ groupName="outgoing links"
+ groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
+ </navigator>
+ <diagramUpdater/>
+ <propertySheet>
+ <tabs
+ xsi:type="gmfgen:GenStandardPropertyTab"
+ iD="appearance"/>
+ <tabs
+ xsi:type="gmfgen:GenStandardPropertyTab"
+ iD="diagram"/>
+ <tabs
+ xsi:type="gmfgen:GenCustomPropertyTab"
+ iD="domain"
+ label="Core">
+ <filter
+ xsi:type="gmfgen:TypeTabFilter">
+ <types>org.eclipse.gmf.runtime.notation.View</types>
+ <types>org.eclipse.gef.EditPart</types>
+ <generatedTypes>abstractNavigatorItem</generatedTypes>
+ </filter>
+ </tabs>
+ </propertySheet>
+ <domainGenModel
+ href="linklabels.genmodel#/"/>
+ <expressionProviders>
+ <providers
+ xsi:type="gmfgen:GenLiteralExpressionProvider">
+ <expressions
+ body=""CanvasLink""/>
+ </providers>
+ <providers
+ xsi:type="gmfgen:GenExpressionInterpreter">
+ <expressions
+ xsi:type="gmfgen:GenConstraint"
+ body="if (self.source.oclIsKindOf(linklabels::Node)) then 'Source element - node' else 'Source element - link' endif"/>
+ </providers>
+ </expressionProviders>
+ <labelParsers
+ extensibleViaService="true">
+ <implementations
+ xsi:type="gmfgen:PredefinedParser"
+ uses="//@diagram/@links.0/@labels.0/@modelFacet //@diagram/@links.0/@labels.1/@modelFacet"/>
+ <implementations
+ xsi:type="gmfgen:ExpressionLabelParser"
+ uses="//@diagram/@links.0/@labels.2/@modelFacet"
+ viewExpression="//@expressionProviders/@providers.1/@expressions.0">
+ <expressionContext
+ href="linklabels.genmodel#//linklabels/LabeledLink"/>
+ </implementations>
+ </labelParsers>
+ <contextMenus
+ context="//@diagram">
+ <items
+ xsi:type="gmfgen:LoadResourceAction"/>
+ </contextMenus>
+</gmfgen:GenEditorGenerator>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
new file mode 100644
index 0000000..6126757
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfgraph:Canvas xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gmfgraph="http://www.eclipse.org/gmf/2006/GraphicalDefinition" name="linklabels">
+ <figures name="Default">
+ <descriptors name="NodeFigure">
+ <actualFigure xsi:type="gmfgraph:Rectangle" name="NodeFigure"/>
+ </descriptors>
+ <descriptors name="LabeledLinkFigure">
+ <actualFigure xsi:type="gmfgraph:PolylineConnection" name="LabeledLinkFigure">
+ <children xsi:type="gmfgraph:Label" name="LabeledLinkSemanticLabelFigure" text="Target"/>
+ <children xsi:type="gmfgraph:Label" name="LabeledLinkFixedLabelFigure" text="<...>"/>
+ <children xsi:type="gmfgraph:Label" name="LabeledLinkOclLabelFigure" text="<...>"/>
+ </actualFigure>
+ <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.0"/>
+ <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.1"/>
+ <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.2"/>
+ </descriptors>
+ </figures>
+ <nodes name="Node" figure="NodeFigure"/>
+ <connections name="LabeledLink" figure="LabeledLinkFigure"/>
+ <labels name="LabeledLinkSemanticLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.0">
+ <facets xsi:type="gmfgraph:AlignmentFacet"/>
+ </labels>
+ <labels name="LabeledLinkFixedLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.1"/>
+ <labels name="LabeledLinkOclLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.2">
+ <facets xsi:type="gmfgraph:AlignmentFacet" alignment="END"/>
+ </labels>
+</gmfgraph:Canvas>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
new file mode 100644
index 0000000..6eaf146
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfmap:Mapping
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:gmfmap="http://www.eclipse.org/gmf/2008/mappings"
+ xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
+ <nodes>
+ <containmentFeature
+ href="linklabels.ecore#//Canvas/elements"/>
+ <ownedChild>
+ <domainMetaElement
+ href="linklabels.ecore#//Node"/>
+ <tool
+ xsi:type="gmftool:CreationTool"
+ href="linklabels.gmftool#//@palette/@tools.0/@tools.0"/>
+ <diagramNode
+ href="linklabels.gmfgraph#Node"/>
+ </ownedChild>
+ </nodes>
+ <links>
+ <domainMetaElement
+ href="linklabels.ecore#//LabeledLink"/>
+ <domainInitializer
+ xsi:type="gmfmap:FeatureSeqInitializer">
+ <initializers
+ xsi:type="gmfmap:FeatureValueSpec">
+ <feature
+ xsi:type="ecore:EAttribute"
+ href="linklabels.ecore#//LabeledLink/fixedLabel"/>
+ <value
+ body=""CanvasLink""
+ language="literal"/>
+ </initializers>
+ </domainInitializer>
+ <labelMappings
+ xsi:type="gmfmap:FeatureLabelMapping"
+ readOnly="true">
+ <diagramLabel
+ href="linklabels.gmfgraph#LabeledLinkFixedLabel"/>
+ <features
+ href="linklabels.ecore#//LabeledLink/fixedLabel"/>
+ </labelMappings>
+ <labelMappings
+ xsi:type="gmfmap:FeatureLabelMapping">
+ <diagramLabel
+ href="linklabels.gmfgraph#LabeledLinkSemanticLabel"/>
+ <features
+ href="linklabels.ecore#//LabeledLink/semanticLabel"/>
+ </labelMappings>
+ <labelMappings
+ xsi:type="gmfmap:ExpressionLabelMapping">
+ <diagramLabel
+ href="linklabels.gmfgraph#LabeledLinkOclLabel"/>
+ <viewExpression
+ xsi:type="gmfmap:Constraint"
+ body="if (self.source.oclIsKindOf(linklabels::Node)) then 'Source element - node' else 'Source element - link' endif"/>
+ </labelMappings>
+ <containmentFeature
+ href="linklabels.ecore#//Canvas/elements"/>
+ <tool
+ xsi:type="gmftool:CreationTool"
+ href="linklabels.gmftool#//@palette/@tools.0/@tools.1"/>
+ <diagramLink
+ href="linklabels.gmfgraph#LabeledLink"/>
+ <sourceMetaFeature
+ xsi:type="ecore:EReference"
+ href="linklabels.ecore#//LabeledLink/source"/>
+ <linkMetaFeature
+ xsi:type="ecore:EReference"
+ href="linklabels.ecore#//LabeledLink/target"/>
+ </links>
+ <diagram>
+ <diagramCanvas
+ href="linklabels.gmfgraph#linklabels"/>
+ <domainModel
+ href="linklabels.ecore#/"/>
+ <domainMetaElement
+ href="linklabels.ecore#//Canvas"/>
+ <palette
+ href="linklabels.gmftool#//@palette"/>
+ </diagram>
+</gmfmap:Mapping>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
new file mode 100644
index 0000000..a2d385b
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmftool:ToolRegistry
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
+ <palette
+ title="linklabelsPalette">
+ <tools
+ xsi:type="gmftool:ToolGroup"
+ title="linklabels">
+ <tools
+ xsi:type="gmftool:CreationTool"
+ title="Node"
+ description="Create new Node">
+ <smallIcon
+ xsi:type="gmftool:DefaultImage"/>
+ <largeIcon
+ xsi:type="gmftool:DefaultImage"/>
+ </tools>
+ <tools
+ xsi:type="gmftool:CreationTool"
+ title="LabeledLink"
+ description="Create new LabeledLink">
+ <smallIcon
+ xsi:type="gmftool:DefaultImage"/>
+ <largeIcon
+ xsi:type="gmftool:DefaultImage"/>
+ </tools>
+ </tools>
+ </palette>
+</gmftool:ToolRegistry>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace
new file mode 100644
index 0000000..374581c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trace:TraceModel
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:trace="http://www.eclipse.org/gmf/2006/Trace">
+ <nodeTraces
+ visualID="2001"
+ queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'Node') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'Canvas') and _containmentMF_.name = 'elements')"/>
+ <linkTraces
+ visualID="4001"
+ queryText="modelFacet.oclIsKindOf(gmfgen::TypeLinkModelFacet) and (let _eClass_:ecore::EClass = modelFacet.oclAsType(gmfgen::TypeLinkModelFacet).metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'LabeledLink')">
+ <linkLabelTraces
+ visualID="6001"
+ queryText="true"/>
+ <linkLabelTraces
+ visualID="6002"
+ queryText="true"/>
+ <linkLabelTraces
+ visualID="6003"
+ queryText="true"/>
+ </linkTraces>
+</trace:TraceModel>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties
new file mode 100644
index 0000000..1e330d8
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Linklabels Model
+providerName = www.example.org
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml
new file mode 100644
index 0000000..7d2925c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated linklabels -->
+ <package
+ uri="http://org.eclipse.gmf.tooling.examples.linklabels"
+ class="org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage"
+ genModel="model/linklabels.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml
new file mode 100644
index 0000000..8ce1519
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml
@@ -0,0 +1,23 @@
+<!--
+ * Copyright (c) 2013 Montages 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
+ *
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.gmf-tooling</groupId>
+ <artifactId>org.eclipse.gmf.tooling.examples.linklabels</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+ <parent>
+ <groupId>org.eclipse.gmf-tooling</groupId>
+ <artifactId>link_labels-example</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../</relativePath>
+ </parent>
+
+</project>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java
new file mode 100644
index 0000000..9e2ca08
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Canvas</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvas()
+ * @model
+ * @generated
+ */
+public interface Canvas extends EObject {
+ /**
+ * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Elements</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Elements</em>' containment reference list.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvas_Elements()
+ * @model containment="true"
+ * @generated
+ */
+ EList<CanvasElement> getElements();
+
+} // Canvas
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java
new file mode 100644
index 0000000..c70d6fd
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Canvas Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvasElement()
+ * @model
+ * @generated
+ */
+public interface CanvasElement extends EObject {
+} // CanvasElement
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java
new file mode 100644
index 0000000..ad2f0ff
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java
@@ -0,0 +1,158 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Labeled Link</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink()
+ * @model
+ * @generated
+ */
+public interface LabeledLink extends CanvasElement {
+ /**
+ * Returns the value of the '<em><b>Semantic Label</b></em>' attribute.
+ * The default value is <code>"Semantic"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Semantic Label</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Semantic Label</em>' attribute.
+ * @see #setSemanticLabel(String)
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_SemanticLabel()
+ * @model default="Semantic"
+ * @generated
+ */
+ String getSemanticLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Semantic Label</em>' attribute.
+ * @see #getSemanticLabel()
+ * @generated
+ */
+ void setSemanticLabel(String value);
+
+ /**
+ * Returns the value of the '<em><b>Fixed Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fixed Label</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fixed Label</em>' attribute.
+ * @see #setFixedLabel(String)
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_FixedLabel()
+ * @model
+ * @generated
+ */
+ String getFixedLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fixed Label</em>' attribute.
+ * @see #getFixedLabel()
+ * @generated
+ */
+ void setFixedLabel(String value);
+
+ /**
+ * Returns the value of the '<em><b>Ocl Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ocl Label</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ocl Label</em>' attribute.
+ * @see #setOclLabel(String)
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_OclLabel()
+ * @model
+ * @generated
+ */
+ String getOclLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ocl Label</em>' attribute.
+ * @see #getOclLabel()
+ * @generated
+ */
+ void setOclLabel(String value);
+
+ /**
+ * Returns the value of the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source</em>' reference.
+ * @see #setSource(CanvasElement)
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_Source()
+ * @model
+ * @generated
+ */
+ CanvasElement getSource();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source</em>' reference.
+ * @see #getSource()
+ * @generated
+ */
+ void setSource(CanvasElement value);
+
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target</em>' reference.
+ * @see #setTarget(CanvasElement)
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_Target()
+ * @model
+ * @generated
+ */
+ CanvasElement getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(CanvasElement value);
+
+} // LabeledLink
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java
new file mode 100644
index 0000000..da49609
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java
@@ -0,0 +1,69 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public interface LinklabelsFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LinklabelsFactory eINSTANCE = org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Canvas</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Canvas</em>'.
+ * @generated
+ */
+ Canvas createCanvas();
+
+ /**
+ * Returns a new object of class '<em>Canvas Element</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Canvas Element</em>'.
+ * @generated
+ */
+ CanvasElement createCanvasElement();
+
+ /**
+ * Returns a new object of class '<em>Node</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Node</em>'.
+ * @generated
+ */
+ Node createNode();
+
+ /**
+ * Returns a new object of class '<em>Labeled Link</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Labeled Link</em>'.
+ * @generated
+ */
+ LabeledLink createLabeledLink();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ LinklabelsPackage getLinklabelsPackage();
+
+} //LinklabelsFactory
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java
new file mode 100644
index 0000000..619c855
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java
@@ -0,0 +1,445 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LinklabelsPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "linklabels";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org.eclipse.gmf.tooling.examples.linklabels";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "linklabels";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LinklabelsPackage eINSTANCE = org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl <em>Canvas</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvas()
+ * @generated
+ */
+ int CANVAS = 0;
+
+ /**
+ * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CANVAS__ELEMENTS = 0;
+
+ /**
+ * The number of structural features of the '<em>Canvas</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CANVAS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Canvas</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CANVAS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl <em>Canvas Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvasElement()
+ * @generated
+ */
+ int CANVAS_ELEMENT = 1;
+
+ /**
+ * The number of structural features of the '<em>Canvas Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CANVAS_ELEMENT_FEATURE_COUNT = 0;
+
+ /**
+ * The number of operations of the '<em>Canvas Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CANVAS_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getNode()
+ * @generated
+ */
+ int NODE = 2;
+
+ /**
+ * The number of structural features of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_FEATURE_COUNT = CANVAS_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_OPERATION_COUNT = CANVAS_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl <em>Labeled Link</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getLabeledLink()
+ * @generated
+ */
+ int LABELED_LINK = 3;
+
+ /**
+ * The feature id for the '<em><b>Semantic Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK__SEMANTIC_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Fixed Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK__FIXED_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Ocl Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK__OCL_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK__SOURCE = CANVAS_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK__TARGET = CANVAS_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Labeled Link</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK_FEATURE_COUNT = CANVAS_ELEMENT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of operations of the '<em>Labeled Link</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABELED_LINK_OPERATION_COUNT = CANVAS_ELEMENT_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas <em>Canvas</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Canvas</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.Canvas
+ * @generated
+ */
+ EClass getCanvas();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements <em>Elements</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Elements</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements()
+ * @see #getCanvas()
+ * @generated
+ */
+ EReference getCanvas_Elements();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement <em>Canvas Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Canvas Element</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.CanvasElement
+ * @generated
+ */
+ EClass getCanvasElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.Node
+ * @generated
+ */
+ EClass getNode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink <em>Labeled Link</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Labeled Link</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink
+ * @generated
+ */
+ EClass getLabeledLink();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Semantic Label</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel()
+ * @see #getLabeledLink()
+ * @generated
+ */
+ EAttribute getLabeledLink_SemanticLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Fixed Label</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel()
+ * @see #getLabeledLink()
+ * @generated
+ */
+ EAttribute getLabeledLink_FixedLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Ocl Label</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel()
+ * @see #getLabeledLink()
+ * @generated
+ */
+ EAttribute getLabeledLink_OclLabel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource()
+ * @see #getLabeledLink()
+ * @generated
+ */
+ EReference getLabeledLink_Source();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target</em>'.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget()
+ * @see #getLabeledLink()
+ * @generated
+ */
+ EReference getLabeledLink_Target();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ LinklabelsFactory getLinklabelsFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl <em>Canvas</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvas()
+ * @generated
+ */
+ EClass CANVAS = eINSTANCE.getCanvas();
+
+ /**
+ * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CANVAS__ELEMENTS = eINSTANCE.getCanvas_Elements();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl <em>Canvas Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvasElement()
+ * @generated
+ */
+ EClass CANVAS_ELEMENT = eINSTANCE.getCanvasElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getNode()
+ * @generated
+ */
+ EClass NODE = eINSTANCE.getNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl <em>Labeled Link</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl
+ * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getLabeledLink()
+ * @generated
+ */
+ EClass LABELED_LINK = eINSTANCE.getLabeledLink();
+
+ /**
+ * The meta object literal for the '<em><b>Semantic Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LABELED_LINK__SEMANTIC_LABEL = eINSTANCE.getLabeledLink_SemanticLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Fixed Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LABELED_LINK__FIXED_LABEL = eINSTANCE.getLabeledLink_FixedLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Ocl Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LABELED_LINK__OCL_LABEL = eINSTANCE.getLabeledLink_OclLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LABELED_LINK__SOURCE = eINSTANCE.getLabeledLink_Source();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LABELED_LINK__TARGET = eINSTANCE.getLabeledLink_Target();
+
+ }
+
+} //LinklabelsPackage
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java
new file mode 100644
index 0000000..2540d15
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getNode()
+ * @model
+ * @generated
+ */
+public interface Node extends CanvasElement {
+} // Node
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java
new file mode 100644
index 0000000..51a9ef7
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Canvas Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CanvasElementImpl extends MinimalEObjectImpl.Container implements CanvasElement {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CanvasElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LinklabelsPackage.Literals.CANVAS_ELEMENT;
+ }
+
+} //CanvasElementImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java
new file mode 100644
index 0000000..0ee121c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.gmf.tooling.examples.linklabels.Canvas;
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Canvas</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CanvasImpl extends MinimalEObjectImpl.Container implements Canvas {
+ /**
+ * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElements()
+ * @generated
+ * @ordered
+ */
+ protected EList<CanvasElement> elements;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CanvasImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LinklabelsPackage.Literals.CANVAS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<CanvasElement> getElements() {
+ if (elements == null) {
+ elements = new EObjectContainmentEList<CanvasElement>(CanvasElement.class, this, LinklabelsPackage.CANVAS__ELEMENTS);
+ }
+ return elements;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case LinklabelsPackage.CANVAS__ELEMENTS:
+ return ((InternalEList<?>)getElements()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LinklabelsPackage.CANVAS__ELEMENTS:
+ return getElements();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LinklabelsPackage.CANVAS__ELEMENTS:
+ getElements().clear();
+ getElements().addAll((Collection<? extends CanvasElement>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LinklabelsPackage.CANVAS__ELEMENTS:
+ getElements().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LinklabelsPackage.CANVAS__ELEMENTS:
+ return elements != null && !elements.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CanvasImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java
new file mode 100644
index 0000000..795db35
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java
@@ -0,0 +1,392 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LabeledLink;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Labeled Link</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getSemanticLabel <em>Semantic Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getFixedLabel <em>Fixed Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getOclLabel <em>Ocl Label</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LabeledLinkImpl extends CanvasElementImpl implements LabeledLink {
+ /**
+ * The default value of the '{@link #getSemanticLabel() <em>Semantic Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSemanticLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String SEMANTIC_LABEL_EDEFAULT = "Semantic";
+
+ /**
+ * The cached value of the '{@link #getSemanticLabel() <em>Semantic Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSemanticLabel()
+ * @generated
+ * @ordered
+ */
+ protected String semanticLabel = SEMANTIC_LABEL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFixedLabel() <em>Fixed Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFixedLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String FIXED_LABEL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFixedLabel() <em>Fixed Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFixedLabel()
+ * @generated
+ * @ordered
+ */
+ protected String fixedLabel = FIXED_LABEL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOclLabel() <em>Ocl Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOclLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String OCL_LABEL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOclLabel() <em>Ocl Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOclLabel()
+ * @generated
+ * @ordered
+ */
+ protected String oclLabel = OCL_LABEL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected CanvasElement source;
+
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected CanvasElement target;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LabeledLinkImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LinklabelsPackage.Literals.LABELED_LINK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSemanticLabel() {
+ return semanticLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSemanticLabel(String newSemanticLabel) {
+ String oldSemanticLabel = semanticLabel;
+ semanticLabel = newSemanticLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL, oldSemanticLabel, semanticLabel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFixedLabel() {
+ return fixedLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFixedLabel(String newFixedLabel) {
+ String oldFixedLabel = fixedLabel;
+ fixedLabel = newFixedLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__FIXED_LABEL, oldFixedLabel, fixedLabel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getOclLabel() {
+ return oclLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOclLabel(String newOclLabel) {
+ String oldOclLabel = oclLabel;
+ oclLabel = newOclLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__OCL_LABEL, oldOclLabel, oclLabel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CanvasElement getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (CanvasElement)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LinklabelsPackage.LABELED_LINK__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CanvasElement basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(CanvasElement newSource) {
+ CanvasElement oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CanvasElement getTarget() {
+ if (target != null && target.eIsProxy()) {
+ InternalEObject oldTarget = (InternalEObject)target;
+ target = (CanvasElement)eResolveProxy(oldTarget);
+ if (target != oldTarget) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, LinklabelsPackage.LABELED_LINK__TARGET, oldTarget, target));
+ }
+ }
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CanvasElement basicGetTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(CanvasElement newTarget) {
+ CanvasElement oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__TARGET, oldTarget, target));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+ return getSemanticLabel();
+ case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+ return getFixedLabel();
+ case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+ return getOclLabel();
+ case LinklabelsPackage.LABELED_LINK__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ case LinklabelsPackage.LABELED_LINK__TARGET:
+ if (resolve) return getTarget();
+ return basicGetTarget();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+ setSemanticLabel((String)newValue);
+ return;
+ case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+ setFixedLabel((String)newValue);
+ return;
+ case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+ setOclLabel((String)newValue);
+ return;
+ case LinklabelsPackage.LABELED_LINK__SOURCE:
+ setSource((CanvasElement)newValue);
+ return;
+ case LinklabelsPackage.LABELED_LINK__TARGET:
+ setTarget((CanvasElement)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+ setSemanticLabel(SEMANTIC_LABEL_EDEFAULT);
+ return;
+ case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+ setFixedLabel(FIXED_LABEL_EDEFAULT);
+ return;
+ case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+ setOclLabel(OCL_LABEL_EDEFAULT);
+ return;
+ case LinklabelsPackage.LABELED_LINK__SOURCE:
+ setSource((CanvasElement)null);
+ return;
+ case LinklabelsPackage.LABELED_LINK__TARGET:
+ setTarget((CanvasElement)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+ return SEMANTIC_LABEL_EDEFAULT == null ? semanticLabel != null : !SEMANTIC_LABEL_EDEFAULT.equals(semanticLabel);
+ case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+ return FIXED_LABEL_EDEFAULT == null ? fixedLabel != null : !FIXED_LABEL_EDEFAULT.equals(fixedLabel);
+ case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+ return OCL_LABEL_EDEFAULT == null ? oclLabel != null : !OCL_LABEL_EDEFAULT.equals(oclLabel);
+ case LinklabelsPackage.LABELED_LINK__SOURCE:
+ return source != null;
+ case LinklabelsPackage.LABELED_LINK__TARGET:
+ return target != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (semanticLabel: ");
+ result.append(semanticLabel);
+ result.append(", fixedLabel: ");
+ result.append(fixedLabel);
+ result.append(", oclLabel: ");
+ result.append(oclLabel);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LabeledLinkImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java
new file mode 100644
index 0000000..fa8717f
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinklabelsFactoryImpl extends EFactoryImpl implements LinklabelsFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LinklabelsFactory init() {
+ try {
+ LinklabelsFactory theLinklabelsFactory = (LinklabelsFactory)EPackage.Registry.INSTANCE.getEFactory(LinklabelsPackage.eNS_URI);
+ if (theLinklabelsFactory != null) {
+ return theLinklabelsFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new LinklabelsFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinklabelsFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case LinklabelsPackage.CANVAS: return createCanvas();
+ case LinklabelsPackage.CANVAS_ELEMENT: return createCanvasElement();
+ case LinklabelsPackage.NODE: return createNode();
+ case LinklabelsPackage.LABELED_LINK: return createLabeledLink();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Canvas createCanvas() {
+ CanvasImpl canvas = new CanvasImpl();
+ return canvas;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CanvasElement createCanvasElement() {
+ CanvasElementImpl canvasElement = new CanvasElementImpl();
+ return canvasElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node createNode() {
+ NodeImpl node = new NodeImpl();
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LabeledLink createLabeledLink() {
+ LabeledLinkImpl labeledLink = new LabeledLinkImpl();
+ return labeledLink;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinklabelsPackage getLinklabelsPackage() {
+ return (LinklabelsPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static LinklabelsPackage getPackage() {
+ return LinklabelsPackage.eINSTANCE;
+ }
+
+} //LinklabelsFactoryImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java
new file mode 100644
index 0000000..80546a9
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java
@@ -0,0 +1,298 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.Canvas;
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LabeledLink;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsFactory;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+import org.eclipse.gmf.tooling.examples.linklabels.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinklabelsPackageImpl extends EPackageImpl implements LinklabelsPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass canvasEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass canvasElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass labeledLinkEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private LinklabelsPackageImpl() {
+ super(eNS_URI, LinklabelsFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link LinklabelsPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static LinklabelsPackage init() {
+ if (isInited) return (LinklabelsPackage)EPackage.Registry.INSTANCE.getEPackage(LinklabelsPackage.eNS_URI);
+
+ // Obtain or create and register package
+ LinklabelsPackageImpl theLinklabelsPackage = (LinklabelsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LinklabelsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LinklabelsPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theLinklabelsPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theLinklabelsPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theLinklabelsPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(LinklabelsPackage.eNS_URI, theLinklabelsPackage);
+ return theLinklabelsPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCanvas() {
+ return canvasEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCanvas_Elements() {
+ return (EReference)canvasEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCanvasElement() {
+ return canvasElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNode() {
+ return nodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLabeledLink() {
+ return labeledLinkEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLabeledLink_SemanticLabel() {
+ return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLabeledLink_FixedLabel() {
+ return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLabeledLink_OclLabel() {
+ return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLabeledLink_Source() {
+ return (EReference)labeledLinkEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLabeledLink_Target() {
+ return (EReference)labeledLinkEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinklabelsFactory getLinklabelsFactory() {
+ return (LinklabelsFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ canvasEClass = createEClass(CANVAS);
+ createEReference(canvasEClass, CANVAS__ELEMENTS);
+
+ canvasElementEClass = createEClass(CANVAS_ELEMENT);
+
+ nodeEClass = createEClass(NODE);
+
+ labeledLinkEClass = createEClass(LABELED_LINK);
+ createEAttribute(labeledLinkEClass, LABELED_LINK__SEMANTIC_LABEL);
+ createEAttribute(labeledLinkEClass, LABELED_LINK__FIXED_LABEL);
+ createEAttribute(labeledLinkEClass, LABELED_LINK__OCL_LABEL);
+ createEReference(labeledLinkEClass, LABELED_LINK__SOURCE);
+ createEReference(labeledLinkEClass, LABELED_LINK__TARGET);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ nodeEClass.getESuperTypes().add(this.getCanvasElement());
+ labeledLinkEClass.getESuperTypes().add(this.getCanvasElement());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(canvasEClass, Canvas.class, "Canvas", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCanvas_Elements(), this.getCanvasElement(), null, "elements", null, 0, -1, Canvas.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(canvasElementEClass, CanvasElement.class, "CanvasElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(labeledLinkEClass, LabeledLink.class, "LabeledLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getLabeledLink_SemanticLabel(), ecorePackage.getEString(), "semanticLabel", "Semantic", 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getLabeledLink_FixedLabel(), ecorePackage.getEString(), "fixedLabel", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getLabeledLink_OclLabel(), ecorePackage.getEString(), "oclLabel", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLabeledLink_Source(), this.getCanvasElement(), null, "source", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getLabeledLink_Target(), this.getCanvasElement(), null, "target", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //LinklabelsPackageImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java
new file mode 100644
index 0000000..4515480
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+import org.eclipse.gmf.tooling.examples.linklabels.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NodeImpl extends CanvasElementImpl implements Node {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LinklabelsPackage.Literals.NODE;
+ }
+
+} //NodeImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java
new file mode 100644
index 0000000..d6bcc9c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java
@@ -0,0 +1,174 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public class LinklabelsAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LinklabelsPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinklabelsAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = LinklabelsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LinklabelsSwitch<Adapter> modelSwitch =
+ new LinklabelsSwitch<Adapter>() {
+ @Override
+ public Adapter caseCanvas(Canvas object) {
+ return createCanvasAdapter();
+ }
+ @Override
+ public Adapter caseCanvasElement(CanvasElement object) {
+ return createCanvasElementAdapter();
+ }
+ @Override
+ public Adapter caseNode(Node object) {
+ return createNodeAdapter();
+ }
+ @Override
+ public Adapter caseLabeledLink(LabeledLink object) {
+ return createLabeledLinkAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas <em>Canvas</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.Canvas
+ * @generated
+ */
+ public Adapter createCanvasAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement <em>Canvas Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.CanvasElement
+ * @generated
+ */
+ public Adapter createCanvasElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.Node
+ * @generated
+ */
+ public Adapter createNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink <em>Labeled Link</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink
+ * @generated
+ */
+ public Adapter createLabeledLinkAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //LinklabelsAdapterFactory
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java
new file mode 100644
index 0000000..f565324
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java
@@ -0,0 +1,175 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public class LinklabelsSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LinklabelsPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LinklabelsSwitch() {
+ if (modelPackage == null) {
+ modelPackage = LinklabelsPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case LinklabelsPackage.CANVAS: {
+ Canvas canvas = (Canvas)theEObject;
+ T result = caseCanvas(canvas);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LinklabelsPackage.CANVAS_ELEMENT: {
+ CanvasElement canvasElement = (CanvasElement)theEObject;
+ T result = caseCanvasElement(canvasElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LinklabelsPackage.NODE: {
+ Node node = (Node)theEObject;
+ T result = caseNode(node);
+ if (result == null) result = caseCanvasElement(node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case LinklabelsPackage.LABELED_LINK: {
+ LabeledLink labeledLink = (LabeledLink)theEObject;
+ T result = caseLabeledLink(labeledLink);
+ if (result == null) result = caseCanvasElement(labeledLink);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Canvas</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Canvas</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCanvas(Canvas object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Canvas Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Canvas Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCanvasElement(CanvasElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNode(Node object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Labeled Link</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Labeled Link</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseLabeledLink(LabeledLink object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //LinklabelsSwitch
diff --git a/test-examples/link_labels/pom.xml b/test-examples/link_labels/pom.xml
new file mode 100644
index 0000000..c36cc90
--- /dev/null
+++ b/test-examples/link_labels/pom.xml
@@ -0,0 +1,27 @@
+<!--
+ * Copyright (c) 2013 Montages 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
+ *
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.gmf-tooling</groupId>
+ <artifactId>link_labels-example</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0.0-SNAPSHOT</version>
+
+
+ <parent>
+ <groupId>org.eclipse.gmf-tooling</groupId>
+ <artifactId>test-examples</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../</relativePath>
+ </parent>
+
+ <modules>
+ <module>org.eclipse.gmf.tooling.examples.linklabels</module>
+ </modules>
+</project>
diff --git a/test-examples/pom.xml b/test-examples/pom.xml
index 3e311b9..86c7b5d 100644
--- a/test-examples/pom.xml
+++ b/test-examples/pom.xml
@@ -30,6 +30,7 @@
<module>pins</module>
<module>shortcut</module>
<module>svg</module>
+ <module>link_labels</module>
</modules>
</project>
diff --git a/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
index 257e8e9..3592ac9 100644
--- a/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
@@ -42,7 +42,8 @@
org.eclipse.gmf.tooling.examples.border,
org.eclipse.gmf.runtime.lite.svg,
org.eclipse.gmf.tooling.examples.border.custom,
- org.eclipse.gmf.tooling.examples.labels
+ org.eclipse.gmf.tooling.examples.labels,
+ org.eclipse.gmf.tooling.examples.linklabels
Bundle-Activator: org.eclipse.gmf.tests.Plugin
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.gmf.tests;x-friends:="org.eclipse.gmf.tests.lite,org.eclipse.gmf.tooling.tests.xtend",
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
index d61e95e..4594355 100644
--- a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
@@ -6,6 +6,7 @@
import org.eclipse.gmf.tests.samples.AffixedSampleTest;
import org.eclipse.gmf.tests.samples.CompartmentsSampleTest;
import org.eclipse.gmf.tests.samples.LabelsSampleTest;
+import org.eclipse.gmf.tests.samples.LinkLabelsTest;
import org.eclipse.gmf.tests.samples.LinksSampleTest;
import org.eclipse.gmf.tests.samples.PinsSampleTest;
import org.eclipse.gmf.tests.samples.SVGSampleTest;
@@ -23,6 +24,7 @@
suite.addTestSuite(AffixedSampleTest.class);
suite.addTestSuite(LabelsSampleTest.class);
//suite.addTestSuite(BorderSampleTest.class);
+ suite.addTestSuite(LinkLabelsTest.class);
return suite;
}
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java
new file mode 100644
index 0000000..fc3138a
--- /dev/null
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java
@@ -0,0 +1,23 @@
+package org.eclipse.gmf.tests.samples;
+
+import org.eclipse.gmf.tests.setup.RuntimeBasedGeneratorConfiguration;
+
+
+public class LinkLabelsTest extends BaseSampleTest {
+
+ public static final String GIT_GMFGEN_PATH = "platform:/plugin/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen";
+
+ public LinkLabelsTest(String name) {
+ this(name, new RuntimeBasedGeneratorConfiguration());
+ }
+
+ public LinkLabelsTest(String name, RuntimeBasedGeneratorConfiguration genConfig) {
+ super(name, genConfig);
+ }
+
+ @Override
+ protected String getRelativeGMFGENPath() {
+ return GIT_GMFGEN_PATH;
+ }
+
+}
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF b/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
index 3bcab8b..6bdf474 100644
--- a/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
@@ -48,7 +48,8 @@
org.eclipse.gmf.tooling.examples.border,
org.eclipse.gmf.runtime.lite.svg,
org.eclipse.gmf.tooling.examples.border.custom,
- org.eclipse.gmf.tooling.examples.labels
+ org.eclipse.gmf.tooling.examples.labels,
+ org.eclipse.gmf.tooling.examples.linklabels
Bundle-Activator: org.eclipse.gmf.tooling.tests.xtend.XtendsTestPluginActivator
Bundle-ActivationPolicy: lazy
Export-Package: edithelpers,
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
index a0ea08a..d2d3027 100644
--- a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
@@ -6,6 +6,7 @@
import org.eclipse.gmf.tooling.tests.xtend.samples.AffixedSampleTestXtend;
import org.eclipse.gmf.tooling.tests.xtend.samples.CompartmentsSampleTestXtend;
import org.eclipse.gmf.tooling.tests.xtend.samples.LabelsSampleTestXtend;
+import org.eclipse.gmf.tooling.tests.xtend.samples.LinkLabelsTestXtend;
import org.eclipse.gmf.tooling.tests.xtend.samples.LinksSampleTestXtend;
import org.eclipse.gmf.tooling.tests.xtend.samples.PinsSampleTestXtend;
import org.eclipse.gmf.tooling.tests.xtend.samples.SVGSampleTestXtend;
@@ -22,6 +23,7 @@
suite.addTestSuite(ShourtcutSampleTestXtend.class);
suite.addTestSuite(AffixedSampleTestXtend.class);
suite.addTestSuite(LabelsSampleTestXtend.class);
+ suite.addTestSuite(LinkLabelsTestXtend.class);
return suite;
}
}
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java
new file mode 100644
index 0000000..82ce7ef
--- /dev/null
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java
@@ -0,0 +1,13 @@
+package org.eclipse.gmf.tooling.tests.xtend.samples;
+
+import org.eclipse.gmf.tests.samples.LinkLabelsTest;
+import org.eclipse.gmf.tooling.tests.xtend.setup.RuntimeBasedGeneratorConfigurationXtend;
+
+
+public class LinkLabelsTestXtend extends LinkLabelsTest {
+
+ public LinkLabelsTestXtend(String name) {
+ super(name, new RuntimeBasedGeneratorConfigurationXtend());
+ }
+
+}