diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.classpath b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..7e88ffbc4d069b560664649d29bbf47e7cd0b6d6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="model"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.project b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.project
new file mode 100644
index 0000000000000000000000000000000000000000..f8641fdfe33eedc21916f5370ba8c25a89c5fee0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram</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>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..49a51a15a398d0d92a0ccba659e197a27b6ce26d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram; singleton:=true
+Bundle-Activator: edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.Activator
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.graphiti;bundle-version="0.8.0",
+ org.eclipse.graphiti.mm;bundle-version="0.8.0",
+ org.eclipse.graphiti.pattern;bundle-version="0.8.0",
+ org.eclipse.graphiti.ui;bundle-version="0.8.0",
+ org.eclipse.graphiti.ui.capabilities;bundle-version="0.8.0",
+ org.eclipselabs.spray.runtime.graphiti,
+ org.eclipselabs.spray.shapes,
+ org.eclipselabs.spray.styles,
+ org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.200",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ com.google.guava;bundle-version="10.0.1",
+ com.google.inject;bundle-version="3.0.0",
+ javax.inject;bundle-version="1.0.0",
+ edu.kit.ipd.descartes.mm.applicationlevel
+Import-Package: org.apache.log4j,
+ org.apache.commons.logging,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.service,
+ org.eclipse.xtext.ui.editor,
+ org.eclipse.xtext.ui.guice,
+ org.eclipse.xtext.ui.resource,
+ org.eclipse.xtext.util
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.shape b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.shape
new file mode 100644
index 0000000000000000000000000000000000000000..5bdca8bb9f7bfc02647d7e3047f41fd8aa99e4c4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.shape
@@ -0,0 +1,47 @@
+/*************************************************************************************
+ *
+ * Spray shapes definition
+ * 
+ * This file contains the definition of graphical figures using the Shapes Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *************************************************************************************/
+// Add import statements here, e.g.
+// import java.util.*
+
+// Add definition of shapes here.
+// shape RectangleShape {
+//     rectangle {
+//         position(x=0,y=0)
+//         size(width=100,height=100)
+//     }
+// }
+
+shape CompositeShape {
+    rectangle {
+    	compartment(
+            layout=vertical
+            spacing = 5
+            margin = 5
+              id = context
+        )
+        position(x=0, y=0)
+        size(width=100, height=25)
+        text {
+            position(x=5, y=0)
+            size(width=95, height=25)
+            id = classText            
+        }
+    }
+}
+
+shape RectShape {
+	rectangle {
+		position(x=0, y=0)
+		size(width=100, height=25)
+		text {
+			position(x=5, y=0)
+			size(width=95, height=25)
+			id = rectText
+		}
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.spray b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.spray
new file mode 100644
index 0000000000000000000000000000000000000000..7203fdd1c74cc5669fedc69b17d264e272684bb6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.spray
@@ -0,0 +1,60 @@
+/*************************************************************************************
+ *
+ * Spray diagram definition
+ * 
+ * This file contains the definition of a graphical editor using the Spray Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *
+ * See also compositediagram.properties to configure generator properties.
+ *************************************************************************************/
+// Add import statements here
+import repository.*
+
+diagram compositediagram for Repository style CompositediagramDefaultStyle
+
+// Add class mappings here. Refer to EClasses here. Don't forget to configure a
+// dependency to the plugin defining the EMF metamodel in META-INF/MANIFEST.MF.
+// It is required to have a genmodel for the metamodel. If the Ecore model lies in
+// a workspace project, this project must have the Xtext nature.
+//
+// Example class mapping:
+//   class BusinessClass icon "ecore/EClass.gif" {
+//     container  ( fill=yellow ) 
+//     {
+//       text ( )  { "<<"+eClass.name+">> " + name};
+//       line ( color=black width=2)
+//     }
+//     behavior {
+//       // Enable create feature for this class and add it to the palette "Shapes"
+//       create into types palette "Shapes";
+//     }
+//   }
+//
+// Example association mapping:
+//   class Association icon "connection16.gif" {
+//     connection ( ) {
+//       from source;
+//       to target;
+//       fromText "source " + source.name
+//     }
+//   }
+
+class CompositeComponent {
+    shape CompositeShape {
+		name into classText  
+		reference assemblyContexts into context
+    }
+    behavior {
+        create into components palette "Components"
+    }    
+} 
+
+class AssemblyContext {
+    shape RectShape {
+		name into rectText        
+    }
+    behavior {
+        create palette "Context"
+    }
+}
+
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.style b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.style
new file mode 100644
index 0000000000000000000000000000000000000000..553a14c1e957e4ba6642257cb3c812251a003739
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/compositediagram.style
@@ -0,0 +1,21 @@
+/*************************************************************************************
+ *
+ * Spray styles definition
+ * 
+ * This file contains the definition of style classes using the Styles Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *************************************************************************************/
+
+// Add definition of styles here.
+style CompositediagramDefaultStyle {
+    description = "The default style of the compositediagram diagram type."
+    // transparency = 0.95
+    // background-color = black
+    // line-color = black
+    // line-style = solid
+    // line-width = 1
+    // font-color = black
+    // font-name = "Tahoma"
+    font-size = 12
+    // font-bold = yes
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.class
new file mode 100644
index 0000000000000000000000000000000000000000..c4334cb9b49fe66101bcd6464a1989f0eac22c88
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.class
new file mode 100644
index 0000000000000000000000000000000000000000..0b81b11fc52147e77c38611850634b8a61486910
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..220c09cda955b0daa9e08f9daf5725de8bcf4292
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..a2bf6190b7fe5bf309c8ee5a95e843016009d7e1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..fb8abf255f15cde81718f4ce898a154dd452dc2f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..28504d83fcfe7e250778b40536317b22c4c5364c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..830c0b7b36f9514a63cdb1f62a72cc89b422c564
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..29cd0f1d6ef1be706e241f8e6ff0a6b7fcccb65f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..885836dad68c66a4ced601a4f5d640225eb8dffe
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.class
new file mode 100644
index 0000000000000000000000000000000000000000..6a612a0f81a6e56d89b801e08dc88a6a7b060519
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..ceaa3759e4c0fc75b10c03500842481ac4967cf6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..fdaf0352b5586efbcf34f7ec2201e1820c10a229
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..fee9ae64080458572ef70028015dc2cf81f99fb0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..f7036e31832108c26ce3ebccf1b67b767bd8840d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..90b2dabc63930680fb3a0ea817df96db24d5bc53
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..6ec070ef5824e3bcfcaadec2a2edf984479ea6e5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..2e14c01c53ba8208864c065412ccc02aeeebc738
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..574a68658b237d01026b4afbe58f323d72889322
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..f7b8be07b3b4eb1944722c9fdcc170eeab4fa96a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..ce068ce5d33e3055c23aaa35d12efe0fcbd9318d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..5ca95d6580c3ea20acaaad546c0ada3fe0eac7d8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..977e19ab4e9307e1a5bc2c03121df5430e5ff197
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..1512ae4e83baa57ae5c47450bbb88faf781e0637
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..b74ce7560971bcd880e331f13f344df70046e99c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..be6aee997de2e8818f44ebe48e7c0d0cdb935510
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..b7a7881d64595551bd7f56a2e0c291fb0e10ddbd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..41d6dfe3b4821b59d5d5fc80cfa7e6f2d6c93ffc
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..8f8f618d5977075f6c21e9df7f35029d4f029b49
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..345eba2c29c201a0e254925c513151fe0cafbb47
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..658f25ba2fd0ca0e5af6ffc53f78f1c098add6f7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..5011f16f2ea86cdd653247694e9a70b6c56e86c4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..216d6df3cafe546d3d16191a46ce90906a6feff0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e377fc63f405e3c60a9a08cd7d44a8872aaacf1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..57d5e6de3f50c46df910f717fcc7d6bf441653c0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..59dc7207d4242a5a4d6e41556cc13e123e2436ce
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..22929b5452ab2a865df3f2ebc42d76509286a9c1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..679e1e12999a48cd825a019a3e2f44f5cc371c8d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase$ResizeConfiguration_RectShape.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase$ResizeConfiguration_RectShape.class
new file mode 100644
index 0000000000000000000000000000000000000000..dd6635a2a2dce66239144359405617ab810849b6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase$ResizeConfiguration_RectShape.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..cd277709e2449379335848639b2e63ee95d6e16d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..44d4db76d29d45c59d3eaf9830a0edd6a5ae2d6a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase$ResizeConfiguration_CompositeShape.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase$ResizeConfiguration_CompositeShape.class
new file mode 100644
index 0000000000000000000000000000000000000000..d4b1d935d888e5097a11da28ab1d9741e61558c4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase$ResizeConfiguration_CompositeShape.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..2e33224d4570818cde54e09833ccf737070881a0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..6f239414b739a43819e5be868baa713123e8cc68
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..57c3f27069fa54f30d4e5ae8b493d5d24a48e6cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.class
new file mode 100644
index 0000000000000000000000000000000000000000..168ac1c31e81547ece0b17184c0cfd41676dde2a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..f846a1a8944080acfe230e5f6a826554ec77af78
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..103503171bd6a2108bacd1b954e05a5f21022df8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.class
new file mode 100644
index 0000000000000000000000000000000000000000..62104ad62a4b3830818ca07caeb9786b173564c6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..758098e36482f8a5070a52112d1195073f3c097c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.class
new file mode 100644
index 0000000000000000000000000000000000000000..661acabd0585eca368333b93dadda883a1957b28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..90de490a9905856d97af20fd3a85b9c570e8d9e7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..82374732f124acbe635b38e9e3984f20be78d11a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..9a0ae7496699cae4ff448256b3bb729b1311c55f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.class
new file mode 100644
index 0000000000000000000000000000000000000000..c841893d5db6fc1e8ce5bff8a5d4aa4913e61ff8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..1cd98b3ddb25f36442098f68e0454ba494dedae9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..71bd07f7a1a6bd4c44677d57fbc37b13604067d0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..4d511579d950261c371e25947a8c854cce0d4de3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.class
new file mode 100644
index 0000000000000000000000000000000000000000..9ddce7a635da0b8cc8c0a10a66a9a00b13df4728
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..6582f5e636dda8c136bdd3ba7968ccc5a328d177
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.class
new file mode 100644
index 0000000000000000000000000000000000000000..589a2fd83abdb637b173a52f33a26aeb1a4b4be9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..f721d02abc8446dcad02c366a86f26435a55238b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..eb43cb24bc06fa88a7223d1d2aa017452fd21a52
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..4f10fc077b802c080a99a7099bd4735222f7132b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.class
new file mode 100644
index 0000000000000000000000000000000000000000..f17b01dfe3c653560dc7df76e57f3a177af36c91
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..c996b5f2d2c386734c50c3d3ab58f6b9013d0feb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..871bbca965956a2f63bcecee4cd3d308975c02fd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase$1.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.class
new file mode 100644
index 0000000000000000000000000000000000000000..25f2b4b85a9399eb43693991ddb2a6bc43f6c222
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape$TextIds.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape$TextIds.class
new file mode 100644
index 0000000000000000000000000000000000000000..7f3699da93eb08d1dbf68288654c87f9b7f6bd5f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape$TextIds.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.class
new file mode 100644
index 0000000000000000000000000000000000000000..9b004ad139f77824fcebe1928e7b92d22959dc09
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape$TextIds.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape$TextIds.class
new file mode 100644
index 0000000000000000000000000000000000000000..7708724989b035e223e3547d4c8701e8e05f9bbf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape$TextIds.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.class
new file mode 100644
index 0000000000000000000000000000000000000000..e276e4a2c98b56ae3220732d7c5bf296b7d9274c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.class b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.class
new file mode 100644
index 0000000000000000000000000000000000000000..98624e32caee3cf10d47ee34708f2505a169c89f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.class differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/spray.properties b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/spray.properties
new file mode 100644
index 0000000000000000000000000000000000000000..20699eefe1f590497e9952d65377195dddd834d9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/bin/spray.properties
@@ -0,0 +1,17 @@
+modelFileExtension = repository
+pluginId        = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+mainPackage     = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+diagramPackage  = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram
+featurePackage  = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features
+propertyPackage = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property
+stylesPackage   = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles
+gradientsPackage= edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.gradients
+shapesPackage   = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes
+utilPackage     = org.eclipselabs.spray.runtime.graphiti.containers
+
+srcManPath      = src
+srcGenPath      = src-gen
+resourceManPath = resource
+resourceGenPath = resource-gen
+projectPath     = ./edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+headerTimestamp = true
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7145833457bf8ad480ac730517de663e996f1e26
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/build.properties
@@ -0,0 +1,7 @@
+source.. = src/,\
+           src-gen/,\
+           model/
+bin.includes = META-INF/,\
+               plugin.xml,\
+               icons/,\
+               model/
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/README.txt b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..68897e2e942f8f5282c4a0569b6f3acf4e65b958
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/README.txt
@@ -0,0 +1 @@
+Place your image resources here.
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/connection16.gif b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/connection16.gif
new file mode 100644
index 0000000000000000000000000000000000000000..186a12726a554815fcbdb78fa950de9a9c26b154
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/connection16.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EAttribute.gif b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bc9944a7d53cc29a1aeb60ee16be2a29fbe0aacb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EAttribute.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EClass.gif b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b8da630d851f42d11457ee5b593ba6c4174ed22
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EClass.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..88cdf2ad85049bb0a4a11fa8dcd13a2a78a0f0d0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/icons/ecore/EReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.shape b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.shape
new file mode 100644
index 0000000000000000000000000000000000000000..5bdca8bb9f7bfc02647d7e3047f41fd8aa99e4c4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.shape
@@ -0,0 +1,47 @@
+/*************************************************************************************
+ *
+ * Spray shapes definition
+ * 
+ * This file contains the definition of graphical figures using the Shapes Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *************************************************************************************/
+// Add import statements here, e.g.
+// import java.util.*
+
+// Add definition of shapes here.
+// shape RectangleShape {
+//     rectangle {
+//         position(x=0,y=0)
+//         size(width=100,height=100)
+//     }
+// }
+
+shape CompositeShape {
+    rectangle {
+    	compartment(
+            layout=vertical
+            spacing = 5
+            margin = 5
+              id = context
+        )
+        position(x=0, y=0)
+        size(width=100, height=25)
+        text {
+            position(x=5, y=0)
+            size(width=95, height=25)
+            id = classText            
+        }
+    }
+}
+
+shape RectShape {
+	rectangle {
+		position(x=0, y=0)
+		size(width=100, height=25)
+		text {
+			position(x=5, y=0)
+			size(width=95, height=25)
+			id = rectText
+		}
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray
new file mode 100644
index 0000000000000000000000000000000000000000..7203fdd1c74cc5669fedc69b17d264e272684bb6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.spray
@@ -0,0 +1,60 @@
+/*************************************************************************************
+ *
+ * Spray diagram definition
+ * 
+ * This file contains the definition of a graphical editor using the Spray Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *
+ * See also compositediagram.properties to configure generator properties.
+ *************************************************************************************/
+// Add import statements here
+import repository.*
+
+diagram compositediagram for Repository style CompositediagramDefaultStyle
+
+// Add class mappings here. Refer to EClasses here. Don't forget to configure a
+// dependency to the plugin defining the EMF metamodel in META-INF/MANIFEST.MF.
+// It is required to have a genmodel for the metamodel. If the Ecore model lies in
+// a workspace project, this project must have the Xtext nature.
+//
+// Example class mapping:
+//   class BusinessClass icon "ecore/EClass.gif" {
+//     container  ( fill=yellow ) 
+//     {
+//       text ( )  { "<<"+eClass.name+">> " + name};
+//       line ( color=black width=2)
+//     }
+//     behavior {
+//       // Enable create feature for this class and add it to the palette "Shapes"
+//       create into types palette "Shapes";
+//     }
+//   }
+//
+// Example association mapping:
+//   class Association icon "connection16.gif" {
+//     connection ( ) {
+//       from source;
+//       to target;
+//       fromText "source " + source.name
+//     }
+//   }
+
+class CompositeComponent {
+    shape CompositeShape {
+		name into classText  
+		reference assemblyContexts into context
+    }
+    behavior {
+        create into components palette "Components"
+    }    
+} 
+
+class AssemblyContext {
+    shape RectShape {
+		name into rectText        
+    }
+    behavior {
+        create palette "Context"
+    }
+}
+
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.style b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.style
new file mode 100644
index 0000000000000000000000000000000000000000..553a14c1e957e4ba6642257cb3c812251a003739
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/compositediagram.style
@@ -0,0 +1,21 @@
+/*************************************************************************************
+ *
+ * Spray styles definition
+ * 
+ * This file contains the definition of style classes using the Styles Language.
+ * Refer to http://code.google.com/a/eclipselabs.org/p/spray/ for documentation.
+ *************************************************************************************/
+
+// Add definition of styles here.
+style CompositediagramDefaultStyle {
+    description = "The default style of the compositediagram diagram type."
+    // transparency = 0.95
+    // background-color = black
+    // line-color = black
+    // line-style = solid
+    // line-width = 1
+    // font-color = black
+    // font-name = "Tahoma"
+    font-size = 12
+    // font-bold = yes
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/spray.properties b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/spray.properties
new file mode 100644
index 0000000000000000000000000000000000000000..20699eefe1f590497e9952d65377195dddd834d9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/model/spray.properties
@@ -0,0 +1,17 @@
+modelFileExtension = repository
+pluginId        = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+mainPackage     = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+diagramPackage  = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram
+featurePackage  = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features
+propertyPackage = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property
+stylesPackage   = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles
+gradientsPackage= edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.gradients
+shapesPackage   = edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes
+utilPackage     = org.eclipselabs.spray.runtime.graphiti.containers
+
+srcManPath      = src
+srcGenPath      = src-gen
+resourceManPath = resource
+resourceGenPath = resource-gen
+projectPath     = ./edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram
+headerTimestamp = true
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/CompositeShape.svg b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/CompositeShape.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d860338396073504b12850e3cf8786a5060da75e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/CompositeShape.svg
@@ -0,0 +1,35 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="110" height="55" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Shape: CompositeShape</title>
+    <metadata>
+        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+            xmlns:dc="http://purl.org/dc/elements/1.1/">
+            <rdf:Description rdf:about="http://code.google.com/a/eclipselabs.org/p/spray/">
+                <dc:creator>org.eclipselabs.spray.shapes.generator.GeneratorSVGDefinition</dc:creator>
+                <dc:subject>Spray SVG Shape</dc:subject>
+                <dc:source>http://code.google.com/a/eclipselabs.org/p/spray/</dc:source>
+                <dc:format>image/svg+xml</dc:format>
+                <dc:type>Image</dc:type>
+            </rdf:Description>
+        </rdf:RDF>
+    </metadata>
+<defs>
+    <style type="text/css"> <![CDATA[
+    rect {fill: none; stroke:black; stroke-width:1px}
+    line {fill: none; stroke:black; stroke-width:1px}
+    polyline {fill: none; stroke:black; stroke-width:1px}
+    polygon {fill: none; stroke:black; stroke-width:1px}
+    circle {fill: none; stroke:black; stroke-width:1px}
+    ellipse {fill: none; stroke:black; stroke-width:1px}
+    text {fill: black; font-family: verdana,sans-serif; font-size:12px;}
+    .default {fill: none; stroke:black; stroke-width:1px}
+    ]]>
+    </style>
+    <rect id="anchor" style="fill:#a0c0e8" width="5" height="5"/>
+</defs>
+<rect x="0" y="0" width="100" height="25"/>
+<text x="5" y="25">#classText</text>
+</svg>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/RectShape.svg b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/RectShape.svg
new file mode 100644
index 0000000000000000000000000000000000000000..da7f6f21b363598876772e76b966d0f9a1512f94
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/shapepreviews/svg/RectShape.svg
@@ -0,0 +1,35 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg width="110" height="55" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>Shape: RectShape</title>
+    <metadata>
+        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+            xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+            xmlns:dc="http://purl.org/dc/elements/1.1/">
+            <rdf:Description rdf:about="http://code.google.com/a/eclipselabs.org/p/spray/">
+                <dc:creator>org.eclipselabs.spray.shapes.generator.GeneratorSVGDefinition</dc:creator>
+                <dc:subject>Spray SVG Shape</dc:subject>
+                <dc:source>http://code.google.com/a/eclipselabs.org/p/spray/</dc:source>
+                <dc:format>image/svg+xml</dc:format>
+                <dc:type>Image</dc:type>
+            </rdf:Description>
+        </rdf:RDF>
+    </metadata>
+<defs>
+    <style type="text/css"> <![CDATA[
+    rect {fill: none; stroke:black; stroke-width:1px}
+    line {fill: none; stroke:black; stroke-width:1px}
+    polyline {fill: none; stroke:black; stroke-width:1px}
+    polygon {fill: none; stroke:black; stroke-width:1px}
+    circle {fill: none; stroke:black; stroke-width:1px}
+    ellipse {fill: none; stroke:black; stroke-width:1px}
+    text {fill: black; font-family: verdana,sans-serif; font-size:12px;}
+    .default {fill: none; stroke:black; stroke-width:1px}
+    ]]>
+    </style>
+    <rect id="anchor" style="fill:#a0c0e8" width="5" height="5"/>
+</defs>
+<rect x="0" y="0" width="100" height="25"/>
+<text x="5" y="25">#rectText</text>
+</svg>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa1eb2512c9e8007fcdde03d67517ef4822cda0f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/Activator.java
@@ -0,0 +1,70 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PluginActivator.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.util.Modules2;
+import org.eclipselabs.spray.runtime.graphiti.GraphitiRuntimeModule;
+import org.osgi.framework.BundleContext;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+    private Injector           injector;
+
+    // The plug-in ID
+    public static final String PLUGIN_ID = "spray"; //$NON-NLS-1$
+
+    // The shared instance
+    private static Activator   plugin;
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start(BundleContext context) throws Exception {
+        super.start(context);
+        plugin = this;
+        injector = createInjector();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop(BundleContext context) throws Exception {
+        plugin = null;
+        super.stop(context);
+    }
+
+    /**
+     * Returns the shared instance
+     * 
+     * @return the shared instance
+     */
+    public static Activator getDefault() {
+        return plugin;
+    }
+
+    protected Injector createInjector() {
+        return Guice.createInjector(Modules2.mixin(new GraphitiRuntimeModule(), new CompositediagramModule()));
+    }
+
+    public final Injector getInjector() {
+        return injector;
+    }
+
+    public static final <T> T get(Class<T> type) {
+        return getDefault().getInjector().getInstance(type);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6170b6191bfe87dfa8adf749d4bb7b45f8380fd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModule.java
@@ -0,0 +1,19 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray GuiceModule.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram;
+
+public class CompositediagramModule extends CompositediagramModuleBase {
+    // Add custom bindings here
+    // public Class<? extends MyInterface> bindMyInterface () {
+    //   return MyInterfaceImpl.class;
+    // }
+    //
+    // Get instances through the Activator:
+    // MyInterface instance = Activator.get(MyInterface.class);
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..535505ed5d7372a03893f4db2ed7377c2ba9e839
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/CompositediagramModuleBase.java
@@ -0,0 +1,36 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray GuiceModule.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.xtext.service.AbstractGenericModule;
+import org.eclipse.xtext.ui.editor.GlobalURIEditorOpener;
+import org.eclipse.xtext.ui.editor.IURIEditorOpener;
+import org.eclipse.xtext.ui.resource.IStorage2UriMapper;
+import org.eclipse.xtext.ui.resource.Storage2UriMapperImpl;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+public class CompositediagramModuleBase extends AbstractGenericModule {
+    public Class<? extends IURIEditorOpener> bindIURIEditorOpener() {
+        return GlobalURIEditorOpener.class;
+    }
+
+    @Override
+    public void configure(Binder binder) {
+        binder.bind(IStorage2UriMapper.class).to(Storage2UriMapperImpl.class);
+        binder.bind(IWorkbench.class).toInstance(PlatformUI.getWorkbench());
+        binder.bind(IWorkspace.class).toInstance(ResourcesPlugin.getWorkspace());
+        binder.bind(String.class).annotatedWith(Names.named("diagramTypeId")).toInstance("compositediagram");
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7904724b779f1874cea290608108acc4f8d487f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProvider.java
@@ -0,0 +1,13 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray DiagramTypeProvider.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+public class CompositediagramDiagramTypeProvider extends CompositediagramDiagramTypeProviderBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..d008ed6810f62b165e3808f1cd0a517d5d5e3f67
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramDiagramTypeProviderBase.java
@@ -0,0 +1,33 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray DiagramTypeProvider.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.graphiti.dt.AbstractDiagramTypeProvider;
+import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+
+public abstract class CompositediagramDiagramTypeProviderBase extends AbstractDiagramTypeProvider {
+    protected IToolBehaviorProvider[] toolBehaviorProviders;
+
+    public CompositediagramDiagramTypeProviderBase() {
+        super();
+        setFeatureProvider(new CompositediagramFeatureProvider(this));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IToolBehaviorProvider[] getAvailableToolBehaviorProviders() {
+        if (toolBehaviorProviders == null) {
+            toolBehaviorProviders = new IToolBehaviorProvider[]{new CompositediagramToolBehaviorProvider(this)};
+        }
+        return toolBehaviorProviders;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ca89e74d4396768dd773402428a42d6361dc3d3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProvider.java
@@ -0,0 +1,19 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray FeatureProvider.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+
+public class CompositediagramFeatureProvider extends CompositediagramFeatureProviderBase {
+
+    public CompositediagramFeatureProvider(final IDiagramTypeProvider dtp) {
+        super(dtp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..4cf62eeccaecc850cfc9aa20548f4463fbbdce80
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramFeatureProviderBase.java
@@ -0,0 +1,292 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray FeatureProvider.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IAddFeature;
+import org.eclipse.graphiti.features.ICreateConnectionFeature;
+import org.eclipse.graphiti.features.ICreateFeature;
+import org.eclipse.graphiti.features.ICopyFeature;
+import org.eclipse.graphiti.features.ILayoutFeature;
+import org.eclipse.graphiti.features.IMoveShapeFeature;
+import org.eclipse.graphiti.features.IPasteFeature;
+import org.eclipse.graphiti.features.IUpdateFeature;
+import org.eclipse.graphiti.features.IDeleteFeature;
+import org.eclipse.graphiti.features.IDirectEditingFeature;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.IResizeShapeFeature;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.context.ICustomContext;
+import org.eclipse.graphiti.features.context.ICopyContext;
+import org.eclipse.graphiti.features.context.IDeleteContext;
+import org.eclipse.graphiti.features.context.IDirectEditingContext;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.context.IPasteContext;
+import org.eclipse.graphiti.features.context.IRemoveContext;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import org.eclipselabs.spray.runtime.graphiti.features.DefaultDeleteFeature;
+import org.eclipselabs.spray.runtime.graphiti.features.DefaultFeatureProvider;
+import org.eclipselabs.spray.runtime.graphiti.features.DefaultRemoveFeature;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayFixedLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.containers.OwnerPropertyDeleteFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramAddAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramAddCompositeComponentFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramCopyFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramCreateAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramCreateCompositeComponentFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramDirectEditAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramDirectEditCompositeComponentFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramLayoutAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramLayoutCompositeComponentFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramPasteFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramResizeAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramResizeCompositeComponentFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramUpdateAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramUpdateCompositeComponentFeature;
+
+@SuppressWarnings("unused")
+public abstract class CompositediagramFeatureProviderBase extends DefaultFeatureProvider {
+    public CompositediagramFeatureProviderBase(final IDiagramTypeProvider dtp) {
+        super(dtp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IAddFeature getAddFeature(final IAddContext context) {
+        // is object for add request a EClass or EReference?
+        final EObject bo = (EObject) context.getNewObject();
+        final String reference = (String) context.getProperty(PROPERTY_REFERENCE);
+        final String alias = (String) context.getProperty(PROPERTY_ALIAS);
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            if (reference == null) {
+                return new CompositediagramAddCompositeComponentFeature(this);
+            }
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            if (reference == null) {
+                return new CompositediagramAddAssemblyContextFeature(this);
+            }
+        }
+        return super.getAddFeature(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ICopyFeature getCopyFeature(ICopyContext context) {
+        return new CompositediagramCopyFeature(this);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ICreateFeature[] getCreateFeatures() {
+        return new ICreateFeature[]{new CompositediagramCreateCompositeComponentFeature(this), new CompositediagramCreateAssemblyContextFeature(this)};
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ICreateConnectionFeature[] getCreateConnectionFeatures() {
+        return new ICreateConnectionFeature[]{};
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IUpdateFeature getUpdateFeature(final IUpdateContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        String alias;
+        if (pictogramElement instanceof Shape) {
+            Shape dslShape = SprayLayoutService.findDslShape(pictogramElement);
+            alias = peService.getPropertyValue(dslShape, PROPERTY_ALIAS);
+        } else {
+            alias = peService.getPropertyValue(pictogramElement, PROPERTY_ALIAS);
+        }
+        //    if (pictogramElement instanceof ContainerShape) {
+        final EObject bo = (EObject) getBusinessObjectForPictogramElement(pictogramElement);
+        if (bo == null) {
+            return null;
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) { // 11
+            return new CompositediagramUpdateCompositeComponentFeature(this);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) { // 11
+            return new CompositediagramUpdateAssemblyContextFeature(this);
+        }
+        //        }
+        return super.getUpdateFeature(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ILayoutFeature getLayoutFeature(final ILayoutContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final EObject bo = (EObject) getBusinessObjectForPictogramElement(pictogramElement);
+        if (bo == null) {
+            return null;
+        }
+        final String alias = peService.getPropertyValue(pictogramElement, PROPERTY_ALIAS);
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            return new CompositediagramLayoutCompositeComponentFeature(this);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            return new CompositediagramLayoutAssemblyContextFeature(this);
+        }
+        return super.getLayoutFeature(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IRemoveFeature getRemoveFeature(final IRemoveContext context) {
+        // Spray specific DefaultRemoveFeature
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        return new DefaultRemoveFeature(this);
+    }
+
+    public IDeleteFeature getDeleteFeature(final IDeleteContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final EObject bo = getBusinessObjectForPictogramElement(pictogramElement);
+        if (bo == null) {
+            return null;
+        }
+        final String reference = peService.getPropertyValue(pictogramElement, PROPERTY_REFERENCE);
+        final String alias = peService.getPropertyValue(pictogramElement, PROPERTY_ALIAS);
+
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            if (reference == null) {
+                return new DefaultDeleteFeature(this);
+            }
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            if (reference == null) {
+                return new DefaultDeleteFeature(this);
+            }
+        }
+
+        return new DefaultDeleteFeature(this);
+    }
+
+    /** 
+     * Ensure that any shape with property {@link ISprayConstants#CAN_MOVE} set to false will not have a move feature.
+     */
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IMoveShapeFeature getMoveShapeFeature(final IMoveShapeContext context) {
+        final Shape shape = context.getShape();
+        final ContainerShape parent = shape.getContainer();
+        EObject eObject = getBusinessObjectForPictogramElement(shape);
+        ContainerShape targetContainer = context.getTargetContainer();
+        EObject target = getBusinessObjectForPictogramElement(targetContainer);
+        if (eObject instanceof CompositeComponent) {
+            return new edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramMoveCompositeComponentFeature(this);
+        }
+
+        if (eObject instanceof AssemblyContext) {
+            return new edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramMoveAssemblyContextFeature(this);
+        }
+
+        return super.getMoveShapeFeature(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IPasteFeature getPasteFeature(IPasteContext context) {
+        return new CompositediagramPasteFeature(this);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IDirectEditingFeature getDirectEditingFeature(IDirectEditingContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final EObject bo = (EObject) getBusinessObjectForPictogramElement(pictogramElement);
+        if (bo == null) {
+            return null;
+        }
+        if (SprayLayoutService.isCompartment(pictogramElement)) {
+            return null;
+        }
+        String alias = null;
+        if (pictogramElement instanceof Shape) {
+            Shape dslShape = SprayLayoutService.findDslShape(pictogramElement);
+            alias = peService.getPropertyValue(dslShape, PROPERTY_ALIAS);
+        } else {
+            alias = peService.getPropertyValue(pictogramElement, PROPERTY_ALIAS);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            return new CompositediagramDirectEditCompositeComponentFeature(this);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            return new CompositediagramDirectEditAssemblyContextFeature(this);
+        }
+        return super.getDirectEditingFeature(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ICustomFeature[] getCustomFeatures(final ICustomContext context) {
+        final EObject bo = (EObject) getBusinessObjectForPictogramElement(context.getPictogramElements()[0]);
+        if (bo == null) {
+            return new ICustomFeature[0];
+        }
+        final String alias = GraphitiProperties.get(context.getPictogramElements()[0], PROPERTY_ALIAS);
+        return new ICustomFeature[0];
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final EObject bo = (EObject) getBusinessObjectForPictogramElement(pictogramElement);
+        if (bo == null) {
+            return null;
+        }
+        final String alias = peService.getPropertyValue(pictogramElement, PROPERTY_ALIAS);
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            return new CompositediagramResizeCompositeComponentFeature(this);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            return new CompositediagramResizeAssemblyContextFeature(this);
+        }
+        return super.getResizeShapeFeature(context);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bcdea840d74dd99782217f405dd41a9bb4c1b318
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProvider.java
@@ -0,0 +1,26 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ImageProvider.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+public class CompositediagramImageProvider extends CompositediagramImageProviderBase {
+    //    /**
+    //     * The image identifier for ...
+    //     */
+    //    public static final String COMPOSITEDIAGRAM__MYIMAGEID     = PREFIX + "MYIMAGEID";
+    //
+    //    /**
+    //     * {@inheritDoc}
+    //     */
+    //    @Override
+    //    protected void addAvailableImages() {
+    //        super.addAvailableImages();
+    //        // register the path for each image identifier
+    //       addImageFilePath(COMPOSITEDIAGRAM__MYIMAGEID, "icons/...");
+    //    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e9f33a4f8a3420dc8c4ae1d23babf8354c9501b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramImageProviderBase.java
@@ -0,0 +1,24 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ImageProvider.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.graphiti.ui.platform.AbstractImageProvider;
+
+public abstract class CompositediagramImageProviderBase extends AbstractImageProvider {
+    // The prefix for all identifiers of this image provider
+    public static final String PREFIX = "edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram.";
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void addAvailableImages() {
+        // register the path for each image identifier
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5c015dd57532a6d7881d0e6144666be259612a7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramModelService.java
@@ -0,0 +1,126 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ModelService.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+
+/**
+ * This class gives access to the domain model root element for a diagram.
+ * On first access, a new resource will be created to which the model
+ * is added.
+ */
+public class CompositediagramModelService implements ISprayConstants {
+    public static final String                    FILE_EXTENSION = "repository";
+    protected IPeService                          peService;
+    protected IDiagramTypeProvider                dtp;
+
+    static protected CompositediagramModelService modelService   = null;
+
+    /**
+     * return the model service, create one if it does not exist yet.
+     */
+    static public CompositediagramModelService getModelService(IDiagramTypeProvider dtp) {
+        modelService = new CompositediagramModelService(dtp);
+        return modelService;
+    }
+
+    /**
+     * return the model service.
+     * returns null if there is no model service.
+     */
+    static public CompositediagramModelService getModelService() {
+        return modelService;
+    }
+
+    protected CompositediagramModelService(IDiagramTypeProvider dtp) {
+        this.dtp = dtp;
+        this.peService = Graphiti.getPeService();
+    }
+
+    public Repository getModel() {
+        final Diagram diagram = dtp.getDiagram();
+        Resource r = diagram.eResource();
+        ResourceSet set = r.getResourceSet();
+        EObject bo = (EObject) dtp.getFeatureProvider().getBusinessObjectForPictogramElement(diagram);
+        Repository model = null;
+        // If its a proxy, resolve it
+        if (bo != null && bo.eIsProxy()) {
+            if (bo instanceof InternalEObject) {
+                model = (Repository) set.getEObject(((InternalEObject) bo).eProxyURI(), true);
+            }
+        }
+        if (model == null) {
+            model = createModel();
+        }
+        return model;
+    }
+
+    public Object getBusinessObject(PictogramElement pe) {
+        return dtp.getFeatureProvider().getBusinessObjectForPictogramElement(dtp.getDiagram());
+    }
+
+    /**
+     * Creates the domain model element and store it in the file. Overwrite to set required properties on creation.
+     */
+    protected Repository createModel() {
+        final Diagram diagram = dtp.getDiagram();
+        try {
+            Repository model = RepositoryFactory.eINSTANCE.createRepository();
+            createModelResourceAndAddModel(model);
+            peService.setPropertyValue(diagram, PROPERTY_URI, EcoreUtil.getURI(model).toString());
+            // link the diagram with the model element
+            dtp.getFeatureProvider().link(diagram, model);
+            return model;
+        } catch (CoreException e) {
+            e.printStackTrace();
+            return null;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    protected void createModelResourceAndAddModel(final Repository model) throws CoreException, IOException {
+        final Diagram diagram = dtp.getDiagram();
+        URI uri = diagram.eResource().getURI();
+        uri = uri.trimFragment();
+        uri = uri.trimFileExtension();
+        uri = uri.appendFileExtension(FILE_EXTENSION);
+        ResourceSet rSet = diagram.eResource().getResourceSet();
+        final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
+        IResource file = workspaceRoot.findMember(uri.toPlatformString(true));
+        if (file == null || !file.exists()) {
+            Resource resource = rSet.createResource(uri);
+            resource.setTrackingModification(true);
+            resource.getContents().add(model);
+        } else {
+            final Resource resource = rSet.getResource(uri, true);
+            resource.getContents().add(model);
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e9736713bf46a7568b84340b1d5698105a92e7c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProvider.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ToolBehaviorProvider.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+
+public class CompositediagramToolBehaviorProvider extends CompositediagramToolBehaviorProviderBase {
+    public CompositediagramToolBehaviorProvider(final IDiagramTypeProvider dtp) {
+        super(dtp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..85d1206d367313d61df606e00a7105a3fa30a03e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/diagram/CompositediagramToolBehaviorProviderBase.java
@@ -0,0 +1,79 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ToolBehaviorProvider.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram;
+
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.features.IFeature;
+import org.eclipse.graphiti.palette.IPaletteCompartmentEntry;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.tb.AbstractSprayToolBehaviorProvider;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.graphiti.services.Graphiti;
+
+import com.google.common.collect.Lists;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramCreateAssemblyContextFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features.CompositediagramCreateCompositeComponentFeature;
+
+public abstract class CompositediagramToolBehaviorProviderBase extends AbstractSprayToolBehaviorProvider {
+    protected static final String COMPARTMENT_CONTEXT    = "Context";
+    protected static final String COMPARTMENT_COMPONENTS = "Components";
+
+    public CompositediagramToolBehaviorProviderBase(final IDiagramTypeProvider dtp) {
+        super(dtp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public GraphicsAlgorithm getSelectionBorder(PictogramElement pe) {
+        boolean isFromDsl = SprayLayoutService.isShapeFromDsl(pe);
+        if (isFromDsl) {
+            ContainerShape container = (ContainerShape) pe;
+            if (!container.getChildren().isEmpty()) {
+                return container.getChildren().get(0).getGraphicsAlgorithm();
+            }
+        }
+        return super.getSelectionBorder(pe);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void buildCreationTools() {
+        buildCreationTool(new CompositediagramCreateCompositeComponentFeature(this.getFeatureProvider()));
+        buildCreationTool(new CompositediagramCreateAssemblyContextFeature(this.getFeatureProvider()));
+        // Compartments
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Iterable<IPaletteCompartmentEntry> buildPaletteCompartments() {
+        return Lists.newArrayList(getPaletteCompartment(COMPARTMENT_CONTEXT), getPaletteCompartment(COMPARTMENT_COMPONENTS), getPaletteCompartment(COMPARTMENT_DEFAULT));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected IPaletteCompartmentEntry getPaletteCompartmentForFeature(final IFeature feature) {
+        if (feature instanceof CompositediagramCreateCompositeComponentFeature) {
+            return getPaletteCompartment(COMPARTMENT_COMPONENTS);
+        } else if (feature instanceof CompositediagramCreateAssemblyContextFeature) {
+            return getPaletteCompartment(COMPARTMENT_CONTEXT);
+        }
+        return super.getPaletteCompartmentForFeature(feature);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a0dd287126de0b9d607d06475e520211392de4f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray AddShapeFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramAddAssemblyContextFeature extends CompositediagramAddAssemblyContextFeatureBase {
+    public CompositediagramAddAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a376a01a1110b01fe0e20638870eaabadfea26b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddAssemblyContextFeatureBase.java
@@ -0,0 +1,104 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray AddShapeFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractAddFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.ISprayShape;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.RectShape;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles.CompositediagramDefaultStyle;
+import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+@SuppressWarnings("unused")
+public abstract class CompositediagramAddAssemblyContextFeatureBase extends AbstractAddFeature {
+    protected final static String typeOrAliasName = "AssemblyContext";
+    protected Diagram             targetDiagram   = null;
+
+    public CompositediagramAddAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canAdd(final IAddContext context) {
+        final EObject newObject = (EObject) context.getNewObject();
+        if (newObject instanceof AssemblyContext) {
+            // check if user wants to add to a diagram
+            if (context.getTargetContainer() instanceof Diagram) {
+                return false;
+            } else if (context.getTargetContainer() instanceof ContainerShape) {
+                // OLD STUFF
+                final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+                // NEW stuff
+                // cls CompositeComponent refers to this metaClassÈ
+                if (target instanceof edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent) {
+                    if (SprayLayoutService.isCompartment(context.getTargetContainer())) {
+                        String id = GraphitiProperties.get(context.getTargetContainer(), TEXT_ID);
+                        if ((id != null) && (id.equals("context"))) {
+                            return true;
+                        }
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PictogramElement add(final IAddContext context) {
+        final AssemblyContext addedModelElement = (AssemblyContext) context.getNewObject();
+        // NEW stuff
+        Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        final ContainerShape targetContainer = context.getTargetContainer();
+        final ISprayStyle style = new CompositediagramDefaultStyle();
+        final ISprayShape shape = new RectShape(getFeatureProvider());
+        final ContainerShape conShape = shape.getShape(targetContainer, style);
+        final IGaService gaService = Graphiti.getGaService();
+        gaService.setLocation(conShape.getGraphicsAlgorithm(), context.getX(), context.getY());
+        link(conShape, addedModelElement);
+        linkShapes(conShape, addedModelElement);
+
+        setDoneChanges(true);
+        updatePictogramElement(conShape);
+        layout(conShape);
+
+        return conShape;
+    }
+
+    protected void linkShapes(ContainerShape conShape, AssemblyContext addedModelElement) {
+        link(conShape, addedModelElement);
+        for (Shape childShape : conShape.getChildren()) {
+            if (childShape instanceof ContainerShape) {
+                linkShapes((ContainerShape) childShape, addedModelElement);
+            } else {
+                link(childShape, addedModelElement);
+            }
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e2f72a4bd44b706b9adc4ca287d60ee3f611fbd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray AddShapeFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramAddCompositeComponentFeature extends CompositediagramAddCompositeComponentFeatureBase {
+    public CompositediagramAddCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab2770202d08adc483204c33c23c4a5b0a13e17c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramAddCompositeComponentFeatureBase.java
@@ -0,0 +1,94 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray AddShapeFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractAddFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.ISprayShape;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.CompositeShape;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles.CompositediagramDefaultStyle;
+import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+@SuppressWarnings("unused")
+public abstract class CompositediagramAddCompositeComponentFeatureBase extends AbstractAddFeature {
+    protected final static String typeOrAliasName = "CompositeComponent";
+    protected Diagram             targetDiagram   = null;
+
+    public CompositediagramAddCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canAdd(final IAddContext context) {
+        final EObject newObject = (EObject) context.getNewObject();
+        if (newObject instanceof CompositeComponent) {
+            // check if user wants to add to a diagram
+            if (context.getTargetContainer() instanceof Diagram) {
+                return true;
+            } else if (context.getTargetContainer() instanceof ContainerShape) {
+                // OLD STUFF
+                final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+                // NEW stuff
+            }
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PictogramElement add(final IAddContext context) {
+        final CompositeComponent addedModelElement = (CompositeComponent) context.getNewObject();
+        // NEW stuff
+        Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        final ContainerShape targetContainer = context.getTargetContainer();
+        final ISprayStyle style = new CompositediagramDefaultStyle();
+        final ISprayShape shape = new CompositeShape(getFeatureProvider());
+        final ContainerShape conShape = shape.getShape(targetContainer, style);
+        final IGaService gaService = Graphiti.getGaService();
+        gaService.setLocation(conShape.getGraphicsAlgorithm(), context.getX(), context.getY());
+        link(conShape, addedModelElement);
+        linkShapes(conShape, addedModelElement);
+
+        setDoneChanges(true);
+        updatePictogramElement(conShape);
+        layout(conShape);
+
+        return conShape;
+    }
+
+    protected void linkShapes(ContainerShape conShape, CompositeComponent addedModelElement) {
+        link(conShape, addedModelElement);
+        for (Shape childShape : conShape.getChildren()) {
+            if (childShape instanceof ContainerShape) {
+                linkShapes((ContainerShape) childShape, addedModelElement);
+            } else {
+                link(childShape, addedModelElement);
+            }
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f8e7dbdeb98c4175a80deb9de448ff0068050eb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray CopyFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramCopyFeature extends CompositediagramCopyFeatureBase {
+    public CompositediagramCopyFeature(IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2f7cd8489efdc0b152456660dd0bc371178cdfd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCopyFeatureBase.java
@@ -0,0 +1,54 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray CopyFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ICopyContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.ui.features.AbstractCopyFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+
+public abstract class CompositediagramCopyFeatureBase extends AbstractCopyFeature {
+
+    public CompositediagramCopyFeatureBase(IFeatureProvider fp) {
+        super(fp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canCopy(ICopyContext context) {
+        final PictogramElement[] pes = context.getPictogramElements();
+        // nothing selected
+        if (pes == null || pes.length == 0) {
+            return false;
+        }
+        // return true, if all selected elements are a subtypes of Repository
+        for (PictogramElement pe : pes) {
+            final Object bo = getBusinessObjectForPictogramElement(pe);
+            if (!(bo instanceof Repository)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void copy(ICopyContext context) {
+        // Copy PictogramElements instead of Objects because of the properties on Shapes.
+        PictogramElement[] pes = context.getPictogramElements();
+        putToClipboard(pes);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..98592754046b027c1dc50773940eef2bf3ee3dd6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray CreateShapeFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramCreateAssemblyContextFeature extends CompositediagramCreateAssemblyContextFeatureBase {
+    public CompositediagramCreateAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b742a7f3d15c9d9020d47c68e68fb6a8aace331
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateAssemblyContextFeatureBase.java
@@ -0,0 +1,106 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray CreateShapeFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipselabs.spray.runtime.graphiti.containers.SampleUtil;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractCreateFeature;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import org.eclipse.graphiti.features.context.IAreaContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram.CompositediagramModelService;
+
+public abstract class CompositediagramCreateAssemblyContextFeatureBase extends AbstractCreateFeature {
+    protected static String                TITLE         = "Create ";
+    protected static String                USER_QUESTION = "Enter new  name";
+    protected CompositediagramModelService modelService;
+    protected AssemblyContext              newClass      = null;
+
+    public CompositediagramCreateAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        // set name and description of the creation feature
+        super(fp, "AssemblyContext", "Create new AssemblyContext");
+        modelService = CompositediagramModelService.getModelService(fp.getDiagramTypeProvider());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canCreate(final ICreateContext context) {
+        final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        // TODO: Respect the cardinality of the containment reference
+        if (context.getTargetContainer() instanceof Diagram) {
+            return false;
+        } else if (context.getTargetContainer() instanceof ContainerShape) {
+        }
+        // And now the new stuff
+        // cls CompositeComponent refers to this metaClass
+        if (target instanceof edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent) {
+            if (SprayLayoutService.isCompartment(context.getTargetContainer())) {
+                String id = GraphitiProperties.get(context.getTargetContainer(), TEXT_ID);
+                if ((id != null) && (id.equals("context"))) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Object[] create(final ICreateContext context) {
+        newClass = createAssemblyContext(context);
+
+        if (newClass == null) {
+            return EMPTY;
+        }
+
+        // do the add
+        addGraphicalRepresentation(context, newClass);
+
+        // activate direct editing after object creation
+        getFeatureProvider().getDirectEditingInfo().setActive(true);
+
+        // return newly created business object(s)
+        return new Object[]{newClass};
+    }
+
+    //        
+
+    /**
+     * Creates a new {@link AssemblyContext} instance and adds it to the containing type.
+     */
+    protected AssemblyContext createAssemblyContext(final ICreateContext context) {
+        // create AssemblyContext instance
+        final AssemblyContext newClass = RepositoryFactory.eINSTANCE.createAssemblyContext();
+        boolean isContainment = false;
+        final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        //              And now the NEW stuff
+        if (target instanceof edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent) {
+            edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent domainObject = (edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent) target;
+            // containment
+            domainObject.getAssemblyContexts().add(newClass);
+            setDoneChanges(true);
+            return newClass;
+        }
+        setDoneChanges(true);
+        return newClass;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..c44a347bf5124496d5e3b6fdc302e73dfddd75f2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray CreateShapeFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramCreateCompositeComponentFeature extends CompositediagramCreateCompositeComponentFeatureBase {
+    public CompositediagramCreateCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..7601322c876a69c4eb048462aa51a8a206928428
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramCreateCompositeComponentFeatureBase.java
@@ -0,0 +1,95 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray CreateShapeFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ICreateContext;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipselabs.spray.runtime.graphiti.containers.SampleUtil;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractCreateFeature;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import org.eclipse.graphiti.features.context.IAreaContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram.CompositediagramModelService;
+
+public abstract class CompositediagramCreateCompositeComponentFeatureBase extends AbstractCreateFeature {
+    protected static String                TITLE         = "Create ";
+    protected static String                USER_QUESTION = "Enter new  name";
+    protected CompositediagramModelService modelService;
+    protected CompositeComponent           newClass      = null;
+
+    public CompositediagramCreateCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        // set name and description of the creation feature
+        super(fp, "CompositeComponent", "Create new CompositeComponent");
+        modelService = CompositediagramModelService.getModelService(fp.getDiagramTypeProvider());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canCreate(final ICreateContext context) {
+        final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        // TODO: Respect the cardinality of the containment reference
+        if (context.getTargetContainer() instanceof Diagram) {
+            return true;
+        } else if (context.getTargetContainer() instanceof ContainerShape) {
+        }
+        // And now the new stuff
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Object[] create(final ICreateContext context) {
+        newClass = createCompositeComponent(context);
+
+        if (newClass == null) {
+            return EMPTY;
+        }
+
+        // do the add
+        addGraphicalRepresentation(context, newClass);
+
+        // activate direct editing after object creation
+        getFeatureProvider().getDirectEditingInfo().setActive(true);
+
+        // return newly created business object(s)
+        return new Object[]{newClass};
+    }
+
+    //       org.eclipse.emf.ecore.impl.EReferenceImpl@69597c46 (name: components) (ordered: false, unique: true, lowerBound: 0, upperBound: -1) (changeable: true, volatile: false, transient: false, defaultValueLiteral: null, unsettable: false, derived: false) (containment: true, resolveProxies: true) 
+
+    /**
+     * Creates a new {@link CompositeComponent} instance and adds it to the containing type.
+     */
+    protected CompositeComponent createCompositeComponent(final ICreateContext context) {
+        // create CompositeComponent instance
+        final CompositeComponent newClass = RepositoryFactory.eINSTANCE.createCompositeComponent();
+        boolean isContainment = false;
+        final Object target = getBusinessObjectForPictogramElement(context.getTargetContainer());
+        if (!isContainment) {
+            // add the element to containment reference
+            Repository model = modelService.getModel();
+            model.getComponents().add(newClass);
+        }
+        //              And now the NEW stuff
+        setDoneChanges(true);
+        return newClass;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..9793f3b50d006ec617770d66d12212c1221e8cdf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray DirectEditFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramDirectEditAssemblyContextFeature extends CompositediagramDirectEditAssemblyContextFeatureBase {
+    public CompositediagramDirectEditAssemblyContextFeature(IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..c15e6ed6c3161704bfb280bee579f27126ea0499
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditAssemblyContextFeatureBase.java
@@ -0,0 +1,85 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray DirectEditFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IDirectEditingContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractDirectEditingFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+
+public abstract class CompositediagramDirectEditAssemblyContextFeatureBase extends AbstractDirectEditingFeature {
+
+    protected IPeService peService = Graphiti.getPeService();
+
+    public CompositediagramDirectEditAssemblyContextFeatureBase(IFeatureProvider fp) {
+        super(fp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canDirectEdit(IDirectEditingContext context) {
+        PictogramElement pe = context.getPictogramElement();
+        Object bo = getBusinessObjectForPictogramElement(pe);
+        GraphicsAlgorithm ga = context.getGraphicsAlgorithm();
+        // support direct editing, if it is a AssemblyContext, and the user clicked
+        // directly on the text and not somewhere else in the rectangle
+        if (bo instanceof AssemblyContext && ga instanceof Text) {
+            return true;
+        }
+        // direct editing not supported in all other cases
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getInitialValue(IDirectEditingContext context) {
+        // return the initial value of the clicked text on the AssemblyContext
+        PictogramElement pe = context.getPictogramElement();
+        AssemblyContext eClass = (AssemblyContext) getBusinessObjectForPictogramElement(pe);
+        Text gAlg = (Text) context.getGraphicsAlgorithm();
+        String id = peService.getPropertyValue(gAlg, TEXT_ID);
+        if (id.equals("rectText")) {
+            return eClass.getName();
+        }
+        return "";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public int getEditingType() {
+        return TYPE_TEXT;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setValue(final String value, final IDirectEditingContext context) {
+        // set the new value on the AssemblyContext
+        final PictogramElement pe = context.getPictogramElement();
+        AssemblyContext eClass = (AssemblyContext) getBusinessObjectForPictogramElement(pe);
+        Text gAlg = (Text) context.getGraphicsAlgorithm();
+        String id = peService.getPropertyValue(gAlg, TEXT_ID);
+        if (id.equals("rectText")) {
+            eClass.setName(value);
+        }
+        updatePictogramElement(pe);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..2b02a9d212fd4bcd81397c5bb64fcf231ad759c2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray DirectEditFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramDirectEditCompositeComponentFeature extends CompositediagramDirectEditCompositeComponentFeatureBase {
+    public CompositediagramDirectEditCompositeComponentFeature(IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..99356123cecd5d63d88e87a3df8f9e7856fed72f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramDirectEditCompositeComponentFeatureBase.java
@@ -0,0 +1,85 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray DirectEditFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IDirectEditingContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractDirectEditingFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+public abstract class CompositediagramDirectEditCompositeComponentFeatureBase extends AbstractDirectEditingFeature {
+
+    protected IPeService peService = Graphiti.getPeService();
+
+    public CompositediagramDirectEditCompositeComponentFeatureBase(IFeatureProvider fp) {
+        super(fp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canDirectEdit(IDirectEditingContext context) {
+        PictogramElement pe = context.getPictogramElement();
+        Object bo = getBusinessObjectForPictogramElement(pe);
+        GraphicsAlgorithm ga = context.getGraphicsAlgorithm();
+        // support direct editing, if it is a CompositeComponent, and the user clicked
+        // directly on the text and not somewhere else in the rectangle
+        if (bo instanceof CompositeComponent && ga instanceof Text) {
+            return true;
+        }
+        // direct editing not supported in all other cases
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getInitialValue(IDirectEditingContext context) {
+        // return the initial value of the clicked text on the CompositeComponent
+        PictogramElement pe = context.getPictogramElement();
+        CompositeComponent eClass = (CompositeComponent) getBusinessObjectForPictogramElement(pe);
+        Text gAlg = (Text) context.getGraphicsAlgorithm();
+        String id = peService.getPropertyValue(gAlg, TEXT_ID);
+        if (id.equals("classText")) {
+            return eClass.getName();
+        }
+        return "";
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public int getEditingType() {
+        return TYPE_TEXT;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setValue(final String value, final IDirectEditingContext context) {
+        // set the new value on the CompositeComponent
+        final PictogramElement pe = context.getPictogramElement();
+        CompositeComponent eClass = (CompositeComponent) getBusinessObjectForPictogramElement(pe);
+        Text gAlg = (Text) context.getGraphicsAlgorithm();
+        String id = peService.getPropertyValue(gAlg, TEXT_ID);
+        if (id.equals("classText")) {
+            eClass.setName(value);
+        }
+        updatePictogramElement(pe);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..b023b18e0adc13d60be71f8553a8cc4f875f42f2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray LayoutFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramLayoutAssemblyContextFeature extends CompositediagramLayoutAssemblyContextFeatureBase {
+    public CompositediagramLayoutAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a6b1bc49f64686264a892fbf7b47d64fb48920c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutAssemblyContextFeatureBase.java
@@ -0,0 +1,52 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray LayoutFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractLayoutFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.RectShape;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+
+public abstract class CompositediagramLayoutAssemblyContextFeatureBase extends AbstractLayoutFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramLayoutAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new RectShape(fp).getShapeLayout();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canLayout(final ILayoutContext context) {
+        final PictogramElement pe = context.getPictogramElement();
+        if (!(pe instanceof ContainerShape)) {
+            return false;
+        }
+        final EList<EObject> businessObjects = pe.getLink().getBusinessObjects();
+        return (businessObjects.size() == 1) && (businessObjects.get(0) instanceof AssemblyContext);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean layout(final ILayoutContext context) {
+        return layoutManager.layout(context);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..04c0944c8e5de1776ecf948527ae21fe9a0628ed
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray LayoutFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramLayoutCompositeComponentFeature extends CompositediagramLayoutCompositeComponentFeatureBase {
+    public CompositediagramLayoutCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..4af72380ae45c063915b22a9ef222307534ff0b2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramLayoutCompositeComponentFeatureBase.java
@@ -0,0 +1,52 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray LayoutFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.ILayoutContext;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractLayoutFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.CompositeShape;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+public abstract class CompositediagramLayoutCompositeComponentFeatureBase extends AbstractLayoutFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramLayoutCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new CompositeShape(fp).getShapeLayout();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canLayout(final ILayoutContext context) {
+        final PictogramElement pe = context.getPictogramElement();
+        if (!(pe instanceof ContainerShape)) {
+            return false;
+        }
+        final EList<EObject> businessObjects = pe.getLink().getBusinessObjects();
+        return (businessObjects.size() == 1) && (businessObjects.get(0) instanceof CompositeComponent);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean layout(final ILayoutContext context) {
+        return layoutManager.layout(context);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..c11653d8b41fab7da0657e654b8a53c4d4ee6b0d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray MoveFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramMoveAssemblyContextFeature extends CompositediagramMoveAssemblyContextFeatureBase {
+    public CompositediagramMoveAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb8e97bdcad2b340de9d29861703e81948d8825b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveAssemblyContextFeatureBase.java
@@ -0,0 +1,114 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray MoveFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayFixedLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayTopLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayDiagramLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.RectShape;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+public abstract class CompositediagramMoveAssemblyContextFeatureBase extends DefaultMoveShapeFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramMoveAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new RectShape(fp).getShapeLayout();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canMoveShape(IMoveShapeContext context) {
+        Shape sourceShape = (Shape) context.getPictogramElement();
+        ContainerShape targetContainer = context.getTargetContainer();
+        Object source = getBusinessObjectForPictogramElement(sourceShape);
+        Object target = getBusinessObjectForPictogramElement(targetContainer);
+        // check whether it can move in the same container
+        if (sourceShape.eContainer() == targetContainer) {
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayFixedLayoutManager)) {
+                return true;
+            }
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayTopLayoutManager)) {
+                return true;
+            }
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayDiagramLayoutManager)) {
+                return true;
+            }
+            return false;
+        }
+        // Can move from containment to another containment compartment
+        if (target instanceof CompositeComponent) {
+            if (SprayLayoutService.isCompartment(context.getTargetContainer())) {
+                String id = GraphitiProperties.get(context.getTargetContainer(), ISprayConstants.TEXT_ID);
+                if ((id != null) && (id.equals("context"))) {
+                    return true;
+                }
+            }
+        }
+        return super.canMoveShape(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void moveShape(IMoveShapeContext context) {
+        PictogramElement sourceShape = context.getPictogramElement();
+        ContainerShape targetContainer = context.getTargetContainer();
+        ContainerShape sourceContainer = context.getSourceContainer();
+        Object sourceParent = getBusinessObjectForPictogramElement(sourceContainer);
+        Object source = getBusinessObjectForPictogramElement(sourceShape);
+        Object target = getBusinessObjectForPictogramElement(targetContainer);
+        if (sourceShape.eContainer() == targetContainer) {
+            super.moveShape(context);
+            return;
+        }
+        if (target instanceof CompositeComponent) {
+            if (SprayLayoutService.isCompartment(targetContainer)) {
+                String id = GraphitiProperties.get(targetContainer, ISprayConstants.TEXT_ID);
+                if ((id != null) && (id.equals("context"))) {
+
+                    sourceContainer.getChildren().remove(source);
+                    ContainerShape sourceTop = SprayLayoutService.findTopDslShape(sourceContainer);
+                    if (sourceTop != null) {
+                        SprayLayoutService.getLayoutManager(sourceTop).layout();
+                    }
+                    // remove from source container and add to target container
+
+                    ((CompositeComponent) target).getAssemblyContexts().add((AssemblyContext) source);
+                    targetContainer.getChildren().add((Shape) sourceShape);
+                    ContainerShape targetTop = SprayLayoutService.findTopDslShape(targetContainer);
+                    if (targetTop != null) {
+                        SprayLayoutService.getLayoutManager(targetTop).layout();
+                    }
+                    return;
+                }
+            }
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..9433794e10c819a6dd00d88914b0155156dd0cea
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray MoveFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramMoveCompositeComponentFeature extends CompositediagramMoveCompositeComponentFeatureBase {
+    public CompositediagramMoveCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..44462f405a7ac3de1d0b9f669f01caa7e61df838
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramMoveCompositeComponentFeatureBase.java
@@ -0,0 +1,80 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray MoveFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IRemoveFeature;
+import org.eclipse.graphiti.features.context.IMoveShapeContext;
+import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.features.context.impl.RemoveContext;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayFixedLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayTopLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayDiagramLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.CompositeShape;
+
+public abstract class CompositediagramMoveCompositeComponentFeatureBase extends DefaultMoveShapeFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramMoveCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new CompositeShape(fp).getShapeLayout();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canMoveShape(IMoveShapeContext context) {
+        Shape sourceShape = (Shape) context.getPictogramElement();
+        ContainerShape targetContainer = context.getTargetContainer();
+        Object source = getBusinessObjectForPictogramElement(sourceShape);
+        Object target = getBusinessObjectForPictogramElement(targetContainer);
+        // check whether it can move in the same container
+        if (sourceShape.eContainer() == targetContainer) {
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayFixedLayoutManager)) {
+                return true;
+            }
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayTopLayoutManager)) {
+                return true;
+            }
+            if ((SprayLayoutService.getLayoutManager(sourceShape.getContainer()) instanceof SprayDiagramLayoutManager)) {
+                return true;
+            }
+            return false;
+        }
+        return super.canMoveShape(context);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void moveShape(IMoveShapeContext context) {
+        PictogramElement sourceShape = context.getPictogramElement();
+        ContainerShape targetContainer = context.getTargetContainer();
+        ContainerShape sourceContainer = context.getSourceContainer();
+        Object sourceParent = getBusinessObjectForPictogramElement(sourceContainer);
+        Object source = getBusinessObjectForPictogramElement(sourceShape);
+        Object target = getBusinessObjectForPictogramElement(targetContainer);
+        if (sourceShape.eContainer() == targetContainer) {
+            super.moveShape(context);
+            return;
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..5decf82e733a1814c8333bd9233ef21c999887fb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeature.java
@@ -0,0 +1,17 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray PasteFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramPasteFeature extends CompositediagramPasteFeatureBase {
+    public CompositediagramPasteFeature(IFeatureProvider fp) {
+        super(fp);
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ddb64ababf6990c94c89aead3f787160e2cf1ab
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramPasteFeatureBase.java
@@ -0,0 +1,98 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray PasteFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.context.IPasteContext;
+import org.eclipse.graphiti.features.context.impl.AddContext;
+import org.eclipse.graphiti.mm.Property;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractPasteFeature;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.diagram.CompositediagramModelService;
+
+public abstract class CompositediagramPasteFeatureBase extends AbstractPasteFeature {
+
+    protected CompositediagramModelService modelService;
+
+    public CompositediagramPasteFeatureBase(IFeatureProvider fp) {
+        super(fp);
+        modelService = CompositediagramModelService.getModelService(fp.getDiagramTypeProvider());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canPaste(IPasteContext context) {
+        // TODO: only support pasting directly in the diagram
+        PictogramElement[] pes = context.getPictogramElements();
+        if (pes.length != 1 || !(pes[0] instanceof Diagram)) {
+            return false;
+        }
+        // can paste, if all objects on the clipboard are PictogramElements with link on subclasses of Repository
+        Object[] fromClipboard = getFromClipboard();
+        if (fromClipboard == null || fromClipboard.length == 0) {
+            return false;
+        }
+        for (Object object : fromClipboard) {
+            if (!(object instanceof PictogramElement)) {
+                return false;
+            } else if (!(getBusinessObjectForPictogramElement((PictogramElement) object) instanceof Repository)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void paste(IPasteContext context) {
+        // already verified, that pasting is allowed just directly in the diagram
+        PictogramElement[] pes = context.getPictogramElements();
+        Diagram diagram = (Diagram) pes[0];
+
+        // get the PictogramElements from the clipboard and the linked business object.
+        Object[] objects = getFromClipboard();
+        for (Object object : objects) {
+            PictogramElement pictogramElement = (PictogramElement) object;
+            Repository boRef = (Repository) getBusinessObjectForPictogramElement(pictogramElement);
+            Repository bo = EcoreUtil.copy(boRef);
+            addBusinessObjectToContainer(bo, pictogramElement);
+
+            // create a new AddContext for the creation of a new shape.
+            AddContext ac = new AddContext(new AddContext(), bo);
+            ac.setLocation(0, 0); // for simplicity paste at (0, 0)
+            ac.setTargetContainer(diagram); // paste on diagram
+            // copy all properties from the shape (e.g. ALIAS etc.)
+            for (Property prop : pictogramElement.getProperties()) {
+                ac.putProperty(prop.getKey(), prop.getValue());
+            }
+            getFeatureProvider().addIfPossible(ac);
+        }
+    }
+
+    protected void addBusinessObjectToContainer(Repository bo, PictogramElement pe) {
+        final Repository model = modelService.getModel();
+        final String alias = Graphiti.getPeService().getPropertyValue(pe, PROPERTY_ALIAS);
+        if (bo.eClass() == RepositoryPackage.Literals.COMPOSITE_COMPONENT && alias == null) {
+            model.getComponents().add((CompositeComponent) bo);
+        }
+        if (bo.eClass() == RepositoryPackage.Literals.ASSEMBLY_CONTEXT && alias == null) {
+            throw new UnsupportedOperationException("No create behavior defined");
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb36685dea9a4bf01d3a6ad257cfec82564bb693
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray ResizeFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramResizeAssemblyContextFeature extends CompositediagramResizeAssemblyContextFeatureBase {
+    public CompositediagramResizeAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a946b61e10ef6dc814ed7e192cfe184ac07986c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeAssemblyContextFeatureBase.java
@@ -0,0 +1,47 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray ResizeFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IResizeConfiguration;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.DefaultResizeConfiguration;
+import org.eclipselabs.spray.runtime.graphiti.features.DefaultResizeShapeFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.RectShape;
+
+public abstract class CompositediagramResizeAssemblyContextFeatureBase extends DefaultResizeShapeFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramResizeAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new RectShape(fp).getShapeLayout();
+    }
+
+    public class ResizeConfiguration_RectShape extends DefaultResizeConfiguration {
+
+        public boolean isHorizontalResizeAllowed() {
+            return layoutManager.isStretchHorizontal();
+        }
+
+        public boolean isVerticalResizeAllowed() {
+            return layoutManager.isStretchVertical();
+        }
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IResizeConfiguration getResizeConfiguration(IResizeShapeContext context) {
+        return new ResizeConfiguration_RectShape();
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..6588b92bb7169bc5f723d9dd26a574ef718b1075
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray ResizeFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramResizeCompositeComponentFeature extends CompositediagramResizeCompositeComponentFeatureBase {
+    public CompositediagramResizeCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5d974e245f362c34ac481e094cbfa2645a2a9c9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramResizeCompositeComponentFeatureBase.java
@@ -0,0 +1,47 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:48 CET 2013 by Spray ResizeFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IResizeConfiguration;
+import org.eclipse.graphiti.features.context.IResizeShapeContext;
+import org.eclipse.graphiti.features.DefaultResizeConfiguration;
+import org.eclipselabs.spray.runtime.graphiti.features.DefaultResizeShapeFeature;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes.CompositeShape;
+
+public abstract class CompositediagramResizeCompositeComponentFeatureBase extends DefaultResizeShapeFeature {
+
+    SprayLayoutManager layoutManager;
+
+    public CompositediagramResizeCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        layoutManager = new CompositeShape(fp).getShapeLayout();
+    }
+
+    public class ResizeConfiguration_CompositeShape extends DefaultResizeConfiguration {
+
+        public boolean isHorizontalResizeAllowed() {
+            return layoutManager.isStretchHorizontal();
+        }
+
+        public boolean isVerticalResizeAllowed() {
+            return layoutManager.isStretchVertical();
+        }
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IResizeConfiguration getResizeConfiguration(IResizeShapeContext context) {
+        return new ResizeConfiguration_CompositeShape();
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..f8d728a4a495cdb5f6963dc7d95e0deb1fa22699
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray UpdateShapeFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramUpdateAssemblyContextFeature extends CompositediagramUpdateAssemblyContextFeatureBase {
+    public CompositediagramUpdateAssemblyContextFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..7f0b499180bab30add891493b6bfab623d014a01
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateAssemblyContextFeatureBase.java
@@ -0,0 +1,135 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray UpdateShapeFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractUpdateFeature;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.Activator;
+
+public abstract class CompositediagramUpdateAssemblyContextFeatureBase extends AbstractUpdateFeature {
+    public CompositediagramUpdateAssemblyContextFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        gaService = Activator.get(IGaService.class);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canUpdate(final IUpdateContext context) {
+        // return true, if linked business object is a AssemblyContext
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final Object bo = getBusinessObjectForPictogramElement(pictogramElement);
+        return (bo instanceof AssemblyContext) && (!(pictogramElement instanceof Diagram));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IReason updateNeeded(final IUpdateContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final Object bo = getBusinessObjectForPictogramElement(pictogramElement);
+        if (!(bo instanceof AssemblyContext)) {
+            return Reason.createFalseReason();
+        }
+        if (pictogramElement instanceof Shape) {
+            Shape shape = (Shape) pictogramElement;
+            AssemblyContext eClass = (AssemblyContext) bo;
+            if (checkUpdateNeededRecursively(shape, eClass)) {
+                return Reason.createTrueReason();
+            }
+            if (shape instanceof ContainerShape) {
+                for (Shape childShape : ((ContainerShape) shape).getChildren()) {
+                    if (checkUpdateNeededRecursively(childShape, eClass)) {
+                        return Reason.createTrueReason();
+                    }
+                }
+            }
+        }
+        return Reason.createFalseReason();
+    }
+
+    protected boolean checkUpdateNeededRecursively(Shape shape, final AssemblyContext eClass) {
+        GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm();
+        if (graphicsAlgorithm instanceof Text) {
+            Text text = (Text) graphicsAlgorithm;
+            String id = peService.getPropertyValue(graphicsAlgorithm, TEXT_ID);
+            if (id != null) {
+                if (id.equals("rectText")) {
+                    String eClassValue = eClass.getName();
+                    String gAlgorithmValue = text.getValue();
+                    if (eClassValue != null) {
+                        if (!eClassValue.equals(gAlgorithmValue)) {
+                            return true;
+                        }
+                    }
+                }
+            }
+        }
+        if (shape instanceof ContainerShape) {
+            for (Shape child : ((ContainerShape) shape).getChildren()) {
+                if (checkUpdateNeededRecursively(child, eClass)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean update(final IUpdateContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final AssemblyContext eClass = (AssemblyContext) getBusinessObjectForPictogramElement(pictogramElement);
+        if (pictogramElement instanceof Shape) {
+            Shape shape = (Shape) pictogramElement;
+            updateChildsRecursively(shape, eClass);
+            Shape top = findTopShape(shape);
+            SprayLayoutService.getLayoutManager(top).layout();
+        }
+        return true;
+
+    }
+
+    protected void updateChildsRecursively(Shape shape, final AssemblyContext eClass) {
+        GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm();
+        if (graphicsAlgorithm instanceof Text) {
+            Text text = (Text) graphicsAlgorithm;
+            String id = peService.getPropertyValue(graphicsAlgorithm, TEXT_ID);
+            if (id != null) {
+                if (id.equals("rectText")) {
+                    text.setValue(eClass.getName());
+                }
+            }
+        }
+
+        if (shape instanceof ContainerShape) {
+            for (Shape child : ((ContainerShape) shape).getChildren()) {
+                updateChildsRecursively(child, eClass);
+            }
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a95782c32af3256062bb16f6cdc5999793fced9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeature.java
@@ -0,0 +1,18 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray UpdateShapeFromDslFeature.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositediagramUpdateCompositeComponentFeature extends CompositediagramUpdateCompositeComponentFeatureBase {
+    public CompositediagramUpdateCompositeComponentFeature(final IFeatureProvider fp) {
+        super(fp);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d7a98c0122089dacaf872314b25ed2d07423995
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/features/CompositediagramUpdateCompositeComponentFeatureBase.java
@@ -0,0 +1,135 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray UpdateShapeFromDslFeature.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.IReason;
+import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.impl.Reason;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.algorithms.Text;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.Shape;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipselabs.spray.runtime.graphiti.features.AbstractUpdateFeature;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.Activator;
+
+public abstract class CompositediagramUpdateCompositeComponentFeatureBase extends AbstractUpdateFeature {
+    public CompositediagramUpdateCompositeComponentFeatureBase(final IFeatureProvider fp) {
+        super(fp);
+        gaService = Activator.get(IGaService.class);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean canUpdate(final IUpdateContext context) {
+        // return true, if linked business object is a CompositeComponent
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final Object bo = getBusinessObjectForPictogramElement(pictogramElement);
+        return (bo instanceof CompositeComponent) && (!(pictogramElement instanceof Diagram));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IReason updateNeeded(final IUpdateContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final Object bo = getBusinessObjectForPictogramElement(pictogramElement);
+        if (!(bo instanceof CompositeComponent)) {
+            return Reason.createFalseReason();
+        }
+        if (pictogramElement instanceof Shape) {
+            Shape shape = (Shape) pictogramElement;
+            CompositeComponent eClass = (CompositeComponent) bo;
+            if (checkUpdateNeededRecursively(shape, eClass)) {
+                return Reason.createTrueReason();
+            }
+            if (shape instanceof ContainerShape) {
+                for (Shape childShape : ((ContainerShape) shape).getChildren()) {
+                    if (checkUpdateNeededRecursively(childShape, eClass)) {
+                        return Reason.createTrueReason();
+                    }
+                }
+            }
+        }
+        return Reason.createFalseReason();
+    }
+
+    protected boolean checkUpdateNeededRecursively(Shape shape, final CompositeComponent eClass) {
+        GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm();
+        if (graphicsAlgorithm instanceof Text) {
+            Text text = (Text) graphicsAlgorithm;
+            String id = peService.getPropertyValue(graphicsAlgorithm, TEXT_ID);
+            if (id != null) {
+                if (id.equals("classText")) {
+                    String eClassValue = eClass.getName();
+                    String gAlgorithmValue = text.getValue();
+                    if (eClassValue != null) {
+                        if (!eClassValue.equals(gAlgorithmValue)) {
+                            return true;
+                        }
+                    }
+                }
+            }
+        }
+        if (shape instanceof ContainerShape) {
+            for (Shape child : ((ContainerShape) shape).getChildren()) {
+                if (checkUpdateNeededRecursively(child, eClass)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean update(final IUpdateContext context) {
+        final PictogramElement pictogramElement = context.getPictogramElement();
+        final CompositeComponent eClass = (CompositeComponent) getBusinessObjectForPictogramElement(pictogramElement);
+        if (pictogramElement instanceof Shape) {
+            Shape shape = (Shape) pictogramElement;
+            updateChildsRecursively(shape, eClass);
+            Shape top = findTopShape(shape);
+            SprayLayoutService.getLayoutManager(top).layout();
+        }
+        return true;
+
+    }
+
+    protected void updateChildsRecursively(Shape shape, final CompositeComponent eClass) {
+        GraphicsAlgorithm graphicsAlgorithm = shape.getGraphicsAlgorithm();
+        if (graphicsAlgorithm instanceof Text) {
+            Text text = (Text) graphicsAlgorithm;
+            String id = peService.getPropertyValue(graphicsAlgorithm, TEXT_ID);
+            if (id != null) {
+                if (id.equals("classText")) {
+                    text.setValue(eClass.getName());
+                }
+            }
+        }
+
+        if (shape instanceof ContainerShape) {
+            for (Shape child : ((ContainerShape) shape).getChildren()) {
+                updateChildsRecursively(child, eClass);
+            }
+        }
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..b205345940488e90cb80a524fa326a1b27017886
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/internal/ExecutableExtensionFactory.java
@@ -0,0 +1,34 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray ExecutableExtensionFactory.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.internal;
+
+import com.google.inject.Injector;
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.Activator;
+
+public class ExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Bundle getBundle() {
+        return Activator.getDefault().getBundle();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Injector getInjector() {
+        return Activator.getDefault().getInjector();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed93950488b281b64e44699217e0572b9a17ad1a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilter.java
@@ -0,0 +1,15 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray Filter.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class AssemblyContextFilter extends AssemblyContextFilterBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..039421202a65f4a2e1ee9e61098be7647775ca9e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextFilterBase.java
@@ -0,0 +1,31 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray Filter.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.AbstractPropertySectionFilter;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+
+public class AssemblyContextFilterBase extends AbstractPropertySectionFilter {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected boolean accept(final PictogramElement pe) {
+        final EObject eObject = Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+        if (eObject instanceof AssemblyContext) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.java
new file mode 100644
index 0000000000000000000000000000000000000000..d357e96ee9d32b1ba8093a05df75d52b21c636aa
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSection.java
@@ -0,0 +1,13 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+public class AssemblyContextIdSection extends AssemblyContextIdSectionBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9ade984224a21ccdca29584c0aa9c3903d46b14
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextIdSectionBase.java
@@ -0,0 +1,111 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.GFPropertySection;
+import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import java.util.List;
+import edu.kit.ipd.descartes.identifier.Identifier;
+import edu.kit.ipd.descartes.identifier.Identifier;
+
+public abstract class AssemblyContextIdSectionBase extends GFPropertySection implements ITabbedPropertyConstants {
+
+    protected Identifier bc = null;
+    protected Text       idWidget;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+        super.createControls(parent, tabbedPropertySheetPage);
+
+        final TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+        final Composite composite = factory.createFlatFormComposite(parent);
+        FormData data;
+
+        idWidget = factory.createText(composite, "");
+        data = new FormData();
+        data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+        data.right = new FormAttachment(100, 0);
+        data.top = new FormAttachment(0, VSPACE);
+        idWidget.setLayoutData(data);
+
+        CLabel valueLabel = factory.createCLabel(composite, "Id");
+        data = new FormData();
+        data.left = new FormAttachment(0, 0);
+        data.right = new FormAttachment(idWidget, -HSPACE);
+        data.top = new FormAttachment(idWidget, 0, SWT.CENTER);
+        valueLabel.setLayoutData(data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void refresh() {
+        idWidget.removeModifyListener(nameListener);
+
+        final PictogramElement pe = getSelectedPictogramElement();
+        if (pe != null) {
+            final EObject bo = (EObject) Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+            // the filter assured, that it is a Identifier
+            if (bo == null)
+                return;
+            bc = (Identifier) bo;
+            String value = "";
+            value = bc.getId();
+            idWidget.setText(value == null ? "" : value);
+            idWidget.addModifyListener(nameListener);
+        }
+    }
+
+    private ModifyListener nameListener = new ModifyListener() {
+                                            public void modifyText(ModifyEvent arg0) {
+                                                TransactionalEditingDomain editingDomain = getDiagramEditor().getEditingDomain();
+                                                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+                                                    @Override
+                                                    protected void doExecute() {
+                                                        changePropertyValue();
+                                                    }
+                                                });
+                                            }
+                                        };
+
+    protected void changePropertyValue() {
+        String newValue = idWidget.getText();
+        if (!newValue.equals(bc.getId())) {
+            bc.setId(newValue);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.java
new file mode 100644
index 0000000000000000000000000000000000000000..67a8d93df79b2401e4d535d829357f74eceb8179
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSection.java
@@ -0,0 +1,13 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+public class AssemblyContextNameSection extends AssemblyContextNameSectionBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b6146f545348aa28610b9bf94f512bf5497c7fc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/AssemblyContextNameSectionBase.java
@@ -0,0 +1,111 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.GFPropertySection;
+import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import java.util.List;
+import edu.kit.ipd.descartes.core.NamedElement;
+import edu.kit.ipd.descartes.core.NamedElement;
+
+public abstract class AssemblyContextNameSectionBase extends GFPropertySection implements ITabbedPropertyConstants {
+
+    protected NamedElement bc = null;
+    protected Text         nameWidget;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+        super.createControls(parent, tabbedPropertySheetPage);
+
+        final TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+        final Composite composite = factory.createFlatFormComposite(parent);
+        FormData data;
+
+        nameWidget = factory.createText(composite, "");
+        data = new FormData();
+        data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+        data.right = new FormAttachment(100, 0);
+        data.top = new FormAttachment(0, VSPACE);
+        nameWidget.setLayoutData(data);
+
+        CLabel valueLabel = factory.createCLabel(composite, "Name");
+        data = new FormData();
+        data.left = new FormAttachment(0, 0);
+        data.right = new FormAttachment(nameWidget, -HSPACE);
+        data.top = new FormAttachment(nameWidget, 0, SWT.CENTER);
+        valueLabel.setLayoutData(data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void refresh() {
+        nameWidget.removeModifyListener(nameListener);
+
+        final PictogramElement pe = getSelectedPictogramElement();
+        if (pe != null) {
+            final EObject bo = (EObject) Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+            // the filter assured, that it is a NamedElement
+            if (bo == null)
+                return;
+            bc = (NamedElement) bo;
+            String value = "";
+            value = bc.getName();
+            nameWidget.setText(value == null ? "" : value);
+            nameWidget.addModifyListener(nameListener);
+        }
+    }
+
+    private ModifyListener nameListener = new ModifyListener() {
+                                            public void modifyText(ModifyEvent arg0) {
+                                                TransactionalEditingDomain editingDomain = getDiagramEditor().getEditingDomain();
+                                                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+                                                    @Override
+                                                    protected void doExecute() {
+                                                        changePropertyValue();
+                                                    }
+                                                });
+                                            }
+                                        };
+
+    protected void changePropertyValue() {
+        String newValue = nameWidget.getText();
+        if (!newValue.equals(bc.getName())) {
+            bc.setName(newValue);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7658ab730c1cddc0b141e09e658510fbdb70b30f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilter.java
@@ -0,0 +1,15 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray Filter.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+
+public class CompositeComponentFilter extends CompositeComponentFilterBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce5e83fd44773349976b489b3673dfb8c8ce390a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentFilterBase.java
@@ -0,0 +1,31 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray Filter.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.AbstractPropertySectionFilter;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+
+public class CompositeComponentFilterBase extends AbstractPropertySectionFilter {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected boolean accept(final PictogramElement pe) {
+        final EObject eObject = Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+        if (eObject instanceof CompositeComponent) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.java
new file mode 100644
index 0000000000000000000000000000000000000000..5de8092c5c51362c92778d350e8af36f75d96070
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSection.java
@@ -0,0 +1,13 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+public class CompositeComponentIdSection extends CompositeComponentIdSectionBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..eff56a14fa128fdd7fe408913eac08104b491b96
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentIdSectionBase.java
@@ -0,0 +1,111 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.GFPropertySection;
+import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import java.util.List;
+import edu.kit.ipd.descartes.identifier.Identifier;
+import edu.kit.ipd.descartes.identifier.Identifier;
+
+public abstract class CompositeComponentIdSectionBase extends GFPropertySection implements ITabbedPropertyConstants {
+
+    protected Identifier bc = null;
+    protected Text       idWidget;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+        super.createControls(parent, tabbedPropertySheetPage);
+
+        final TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+        final Composite composite = factory.createFlatFormComposite(parent);
+        FormData data;
+
+        idWidget = factory.createText(composite, "");
+        data = new FormData();
+        data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+        data.right = new FormAttachment(100, 0);
+        data.top = new FormAttachment(0, VSPACE);
+        idWidget.setLayoutData(data);
+
+        CLabel valueLabel = factory.createCLabel(composite, "Id");
+        data = new FormData();
+        data.left = new FormAttachment(0, 0);
+        data.right = new FormAttachment(idWidget, -HSPACE);
+        data.top = new FormAttachment(idWidget, 0, SWT.CENTER);
+        valueLabel.setLayoutData(data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void refresh() {
+        idWidget.removeModifyListener(nameListener);
+
+        final PictogramElement pe = getSelectedPictogramElement();
+        if (pe != null) {
+            final EObject bo = (EObject) Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+            // the filter assured, that it is a Identifier
+            if (bo == null)
+                return;
+            bc = (Identifier) bo;
+            String value = "";
+            value = bc.getId();
+            idWidget.setText(value == null ? "" : value);
+            idWidget.addModifyListener(nameListener);
+        }
+    }
+
+    private ModifyListener nameListener = new ModifyListener() {
+                                            public void modifyText(ModifyEvent arg0) {
+                                                TransactionalEditingDomain editingDomain = getDiagramEditor().getEditingDomain();
+                                                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+                                                    @Override
+                                                    protected void doExecute() {
+                                                        changePropertyValue();
+                                                    }
+                                                });
+                                            }
+                                        };
+
+    protected void changePropertyValue() {
+        String newValue = idWidget.getText();
+        if (!newValue.equals(bc.getId())) {
+            bc.setId(newValue);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d39c01d622175bcd57eb64780a42e8856674e98
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSection.java
@@ -0,0 +1,13 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ * 
+ * This file is an extension point: copy to "src" folder to manually add code to this
+ * extension point.
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+public class CompositeComponentNameSection extends CompositeComponentNameSectionBase {
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab15b1426f0e2a9b63d0f74db57c7b89c7d7948e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/property/CompositeComponentNameSectionBase.java
@@ -0,0 +1,111 @@
+/*************************************************************************************
+ *
+ * Generated on Thu Jan 03 18:22:47 CET 2013 by Spray PropertySection.xtend
+ *
+ * This file contains generated and should not be changed.
+ * Use the extension point class (the direct subclass of this class) to add manual code
+ *
+ *************************************************************************************/
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.property;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.platform.GFPropertySection;
+import org.eclipse.graphiti.ui.internal.services.GraphitiUiInternal;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import java.util.List;
+import edu.kit.ipd.descartes.core.NamedElement;
+import edu.kit.ipd.descartes.core.NamedElement;
+
+public abstract class CompositeComponentNameSectionBase extends GFPropertySection implements ITabbedPropertyConstants {
+
+    protected NamedElement bc = null;
+    protected Text         nameWidget;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
+        super.createControls(parent, tabbedPropertySheetPage);
+
+        final TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+        final Composite composite = factory.createFlatFormComposite(parent);
+        FormData data;
+
+        nameWidget = factory.createText(composite, "");
+        data = new FormData();
+        data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH);
+        data.right = new FormAttachment(100, 0);
+        data.top = new FormAttachment(0, VSPACE);
+        nameWidget.setLayoutData(data);
+
+        CLabel valueLabel = factory.createCLabel(composite, "Name");
+        data = new FormData();
+        data.left = new FormAttachment(0, 0);
+        data.right = new FormAttachment(nameWidget, -HSPACE);
+        data.top = new FormAttachment(nameWidget, 0, SWT.CENTER);
+        valueLabel.setLayoutData(data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void refresh() {
+        nameWidget.removeModifyListener(nameListener);
+
+        final PictogramElement pe = getSelectedPictogramElement();
+        if (pe != null) {
+            final EObject bo = (EObject) Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
+            // the filter assured, that it is a NamedElement
+            if (bo == null)
+                return;
+            bc = (NamedElement) bo;
+            String value = "";
+            value = bc.getName();
+            nameWidget.setText(value == null ? "" : value);
+            nameWidget.addModifyListener(nameListener);
+        }
+    }
+
+    private ModifyListener nameListener = new ModifyListener() {
+                                            public void modifyText(ModifyEvent arg0) {
+                                                TransactionalEditingDomain editingDomain = getDiagramEditor().getEditingDomain();
+                                                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+                                                    @Override
+                                                    protected void doExecute() {
+                                                        changePropertyValue();
+                                                    }
+                                                });
+                                            }
+                                        };
+
+    protected void changePropertyValue() {
+        String newValue = nameWidget.getText();
+        if (!newValue.equals(bc.getName())) {
+            bc.setName(newValue);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java
new file mode 100644
index 0000000000000000000000000000000000000000..1952a57dc292bbe463599f5c9e366fe6811a7f61
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/CompositeShape.java
@@ -0,0 +1,128 @@
+/**
+ * This is a generated Shape for Spray
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.eclipse.graphiti.mm.algorithms.styles.Point;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+
+import org.eclipse.graphiti.datatypes.IDimension;
+import org.eclipse.graphiti.features.*;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.graphiti.mm.pictograms.*;
+import org.eclipse.graphiti.mm.algorithms.*;
+import org.eclipse.graphiti.mm.algorithms.styles.*;
+
+import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayAbstractLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutType;
+
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import org.eclipselabs.spray.runtime.graphiti.shape.DefaultSprayShape;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
+
+@SuppressWarnings("all")
+public class CompositeShape extends DefaultSprayShape {
+    
+	public static enum TextIds {
+		context,
+		classText
+	}
+	
+	public CompositeShape(IFeatureProvider fp) {
+		super(fp);
+	}
+	
+	@Override
+	public ContainerShape getShape(ContainerShape targetContainer, ISprayStyle sprayStyle) {
+		// Create a ContainerShape for this Shape
+		Diagram diagram = peService.getDiagramForShape(targetContainer);
+		ContainerShape containerShape = peCreateService.createContainerShape(targetContainer, true);
+		SprayLayoutService.setId(containerShape, "CompositeShape.containerShape");
+		
+		// define general layout for ContainerShape
+		sprayStyle.getStyle(diagram).setProportional(false);
+		sprayStyle.getStyle(diagram).setStretchH(false);	   
+		sprayStyle.getStyle(diagram).setStretchV(false);	   
+		
+		// layout data
+		SprayLayoutType containerLayout = SprayLayoutType.TOP;
+		SprayLayoutService.setLayoutManager(containerShape, containerLayout, 0, 0, true);
+		SprayLayoutService.getLayoutData(containerShape).setVisible(true);
+		
+		// creates the cascaded elements (figures)
+		IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
+		directEditingInfo.setMainPictogramElement(containerShape);
+		directEditingInfo.setPictogramElement(containerShape);
+		
+		GraphicsAlgorithm element_0 = gaService.createInvisibleRectangle(containerShape);
+		element_0.setStyle(sprayStyle.getStyle(diagram));
+		SprayLayoutService.setShapeFromDsl(containerShape, true);
+		gaService.setLocationAndSize(element_0, 0, 0, 100, 25);
+		
+		ContainerShape shape_1 = peCreateService.createContainerShape(containerShape, true);
+		SprayLayoutService.setId(shape_1, "CompositeShape.shape_1");
+		SprayLayoutService.setCompartment(shape_1, true);
+		GraphitiProperties.set(shape_1, ISprayConstants.TEXT_ID, "context");
+		SprayLayoutType layout_1 = SprayLayoutType.VERTICAL;
+		SprayLayoutService.setLayoutManager(shape_1, layout_1, 5, 5, true);
+		SprayLayoutService.setLayoutData(shape_1, 100, 25);
+		Rectangle element_1 = gaService.createPlainRectangle(shape_1);
+		ISprayStyle style_1 = sprayStyle;
+		element_1.setStyle(style_1.getStyle(diagram));
+		gaService.setLocationAndSize(element_1, 0, 0, 100, 25);
+		SprayLayoutService.setLayoutData(shape_1, 100, 25, true);
+		// start RECURSIVEcREATION shape_1
+		
+		Shape shape_2 = peCreateService.createShape(shape_1, false);
+		SprayLayoutService.setId(shape_2, "CompositeShape.shape_2");
+		Text element_2 = gaService.createPlainText(shape_2);
+		ISprayStyle style_2 = style_1;
+		element_2.setStyle(style_2.getStyle(diagram));
+		gaService.setLocationAndSize(element_2, 5, 0, 95, 25);
+		SprayLayoutService.setLayoutData(shape_2, 95, 25, true);
+		element_2.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);
+		element_2.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
+		peService.setPropertyValue(element_2, ISprayConstants.TEXT_ID, TextIds.classText.name());
+		peService.setPropertyValue(shape_2, ISprayConstants.TEXT_ID, TextIds.classText.name());
+		element_2.setValue("");
+		getFeatureProvider().getDirectEditingInfo().setGraphicsAlgorithm(element_2);
+		// END createElement Text parent shape_1
+		// end RECURSIVEcREATION shape_1
+		
+		
+		// Set start values for height and width as properties on the element for Layout Feature
+		SprayLayoutManager.setSizePictogramProperties(containerShape);
+		
+		// creates the anchors
+		peCreateService.createChopboxAnchor(containerShape);
+		
+		// Fix the broken coordinate syaten for not active container shapes
+        SprayAbstractLayoutManager.fixOffset(containerShape);
+		return containerShape;
+	}
+
+	public SprayLayoutManager getShapeLayout() {
+		SprayLayoutManager layoutManager = new SprayLayoutManager( );
+		layoutManager.setMinSizeWidth(-1);	
+		layoutManager.setMaxSizeWidth(-1);	
+		layoutManager.setMinSizeHeight(-1);	
+		layoutManager.setMaxSizeHeight(-1);	
+		layoutManager.setStretchHorizontal(true);		   
+		layoutManager.setStretchVertical(true);	   
+		return layoutManager;
+	}
+	
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1151fc3825cd9a867df8a977d4eae7a12da0900
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/shapes/RectShape.java
@@ -0,0 +1,123 @@
+/**
+ * This is a generated Shape for Spray
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.shapes;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.eclipse.graphiti.mm.algorithms.styles.Point;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+
+import org.eclipse.graphiti.datatypes.IDimension;
+import org.eclipse.graphiti.features.*;
+import org.eclipse.graphiti.features.context.IAddContext;
+import org.eclipse.graphiti.features.impl.AbstractAddShapeFeature;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.services.IPeCreateService;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+
+import org.eclipse.graphiti.mm.pictograms.*;
+import org.eclipse.graphiti.mm.algorithms.*;
+import org.eclipse.graphiti.mm.algorithms.styles.*;
+
+import org.eclipselabs.spray.runtime.graphiti.ISprayConstants;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayAbstractLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutService;
+import org.eclipselabs.spray.runtime.graphiti.layout.SprayLayoutType;
+
+import org.eclipselabs.spray.runtime.graphiti.GraphitiProperties;
+import org.eclipselabs.spray.runtime.graphiti.shape.DefaultSprayShape;
+import org.eclipselabs.spray.runtime.graphiti.shape.SprayLayoutManager;
+import org.eclipselabs.spray.runtime.graphiti.styles.ISprayStyle;
+
+@SuppressWarnings("all")
+public class RectShape extends DefaultSprayShape {
+    
+	public static enum TextIds {
+		rectText
+	}
+	
+	public RectShape(IFeatureProvider fp) {
+		super(fp);
+	}
+	
+	@Override
+	public ContainerShape getShape(ContainerShape targetContainer, ISprayStyle sprayStyle) {
+		// Create a ContainerShape for this Shape
+		Diagram diagram = peService.getDiagramForShape(targetContainer);
+		ContainerShape containerShape = peCreateService.createContainerShape(targetContainer, true);
+		SprayLayoutService.setId(containerShape, "RectShape.containerShape");
+		
+		// define general layout for ContainerShape
+		sprayStyle.getStyle(diagram).setProportional(false);
+		sprayStyle.getStyle(diagram).setStretchH(false);	   
+		sprayStyle.getStyle(diagram).setStretchV(false);	   
+		
+		// layout data
+		SprayLayoutType containerLayout = SprayLayoutType.TOP;
+		SprayLayoutService.setLayoutManager(containerShape, containerLayout, 0, 0, true);
+		SprayLayoutService.getLayoutData(containerShape).setVisible(true);
+		
+		// creates the cascaded elements (figures)
+		IDirectEditingInfo directEditingInfo = getFeatureProvider().getDirectEditingInfo();
+		directEditingInfo.setMainPictogramElement(containerShape);
+		directEditingInfo.setPictogramElement(containerShape);
+		
+		GraphicsAlgorithm element_0 = gaService.createInvisibleRectangle(containerShape);
+		element_0.setStyle(sprayStyle.getStyle(diagram));
+		SprayLayoutService.setShapeFromDsl(containerShape, true);
+		gaService.setLocationAndSize(element_0, 0, 0, 100, 25);
+		
+		ContainerShape shape_1 = peCreateService.createContainerShape(containerShape, false);
+		SprayLayoutService.setId(shape_1, "RectShape.shape_1");
+		SprayLayoutService.setCompartment(shape_1, false);
+		Rectangle element_1 = gaService.createPlainRectangle(shape_1);
+		ISprayStyle style_1 = sprayStyle;
+		element_1.setStyle(style_1.getStyle(diagram));
+		gaService.setLocationAndSize(element_1, 0, 0, 100, 25);
+		SprayLayoutService.setLayoutData(shape_1, 100, 25, true);
+		// start RECURSIVEcREATION shape_1
+		
+		Shape shape_2 = peCreateService.createShape(shape_1, false);
+		SprayLayoutService.setId(shape_2, "RectShape.shape_2");
+		Text element_2 = gaService.createPlainText(shape_2);
+		ISprayStyle style_2 = style_1;
+		element_2.setStyle(style_2.getStyle(diagram));
+		gaService.setLocationAndSize(element_2, 5, 0, 95, 25);
+		SprayLayoutService.setLayoutData(shape_2, 95, 25, true);
+		element_2.setHorizontalAlignment(Orientation.ALIGNMENT_LEFT);
+		element_2.setVerticalAlignment(Orientation.ALIGNMENT_TOP);
+		peService.setPropertyValue(element_2, ISprayConstants.TEXT_ID, TextIds.rectText.name());
+		peService.setPropertyValue(shape_2, ISprayConstants.TEXT_ID, TextIds.rectText.name());
+		element_2.setValue("");
+		getFeatureProvider().getDirectEditingInfo().setGraphicsAlgorithm(element_2);
+		// END createElement Text parent shape_1
+		// end RECURSIVEcREATION shape_1
+		
+		
+		// Set start values for height and width as properties on the element for Layout Feature
+		SprayLayoutManager.setSizePictogramProperties(containerShape);
+		
+		// creates the anchors
+		peCreateService.createChopboxAnchor(containerShape);
+		
+		// Fix the broken coordinate syaten for not active container shapes
+        SprayAbstractLayoutManager.fixOffset(containerShape);
+		return containerShape;
+	}
+
+	public SprayLayoutManager getShapeLayout() {
+		SprayLayoutManager layoutManager = new SprayLayoutManager( );
+		layoutManager.setMinSizeWidth(-1);	
+		layoutManager.setMaxSizeWidth(-1);	
+		layoutManager.setMinSizeHeight(-1);	
+		layoutManager.setMaxSizeHeight(-1);	
+		layoutManager.setStretchHorizontal(true);		   
+		layoutManager.setStretchVertical(true);	   
+		return layoutManager;
+	}
+	
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java
new file mode 100644
index 0000000000000000000000000000000000000000..5e534eb8eb2e14afdeafbcb68766f9e7fb7df762
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram/src-gen/edu/kit/ipd/descartes/mm/applicationlevel/repository/compositediagram/styles/CompositediagramDefaultStyle.java
@@ -0,0 +1,76 @@
+/**
+ * This is a generated Style class for Spray.
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.compositediagram.styles;
+
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.algorithms.styles.Style;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IGaService;
+import org.eclipse.graphiti.util.ColorConstant;
+import org.eclipse.graphiti.util.IColorConstant;
+import org.eclipse.graphiti.mm.algorithms.styles.AdaptedGradientColoredAreas;
+import org.eclipse.graphiti.util.IGradientType;
+import org.eclipse.graphiti.mm.algorithms.styles.StylesFactory;
+import org.eclipse.graphiti.util.IPredefinedRenderingStyle;
+import org.eclipselabs.spray.styles.generator.util.GradientUtilClass;
+
+
+	/**
+	 * This is a generated Style class for Spray.
+	 * Description: The default style of the compositediagram diagram type.
+	 */
+	@SuppressWarnings("all")
+	public class CompositediagramDefaultStyle extends org.eclipselabs.spray.runtime.graphiti.styles.DefaultSprayStyle {
+	    
+	    /**
+		 * This method creates a Style and returns the defined style.
+		 * Description: The default style of the compositediagram diagram type.
+		 */
+	    @Override
+		public Style newStyle(Diagram diagram) {
+			IGaService gaService = Graphiti.getGaService();
+			
+			// Creating Style with given id and description
+			Style style = super.newStyle(diagram);
+			style.setId("CompositediagramDefaultStyle");
+			style.setDescription("The default style of the compositediagram diagram type.");
+			
+			        // transparency value
+			
+			// background attributes
+			
+			        // line attributes
+			
+			        // font attributes
+			        String fontName = style.getFont().getName();
+			        int fontSize = 12;
+			        boolean fontItalic = style.getFont().isItalic();
+			        boolean fontBold = style.getFont().isBold();
+			        style.setFont(gaService.manageFont(diagram, fontName, fontSize, fontItalic, fontBold));
+			
+			
+			return style;
+		}
+		
+	    /**
+		 * This method returns the font color for the style. 
+		 * The font color will be returned separated, because Graphiti allows just the foreground color.
+		 * The foreground color will be used for lines and fonts at the same time.
+		 */
+		@Override
+		public Color getFontColor(Diagram diagram) {
+			return super.getFontColor(diagram);
+		}
+
+		 /**
+		 * This method returns Color Schema of the Style
+		 */
+		public AdaptedGradientColoredAreas getColorSchema() {
+			return null;	
+		}
+		
+		
+	}