diff --git a/edu.kit.ipd.descartes.core.edit/.classpath b/edu.kit.ipd.descartes.core.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.core.edit/.project b/edu.kit.ipd.descartes.core.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..cb428e68d0f990be8512587ff9a7daa27f748853
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.core.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..afdeffb40dee62fff0d6130f2f14a22c98889641
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.core.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.core.provider.CoreEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.core.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.core.edit/build.properties b/edu.kit.ipd.descartes.core.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..528395856233aa160a073146fc888e8ee3673020
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/build.properties
@@ -0,0 +1,9 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.core.edit/plugin.properties b/edu.kit.ipd.descartes.core.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..76afd017a203b928c822e62f7d70a962c8b162a4
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/plugin.properties
@@ -0,0 +1,25 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Core Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_NamedElement_type = Named Element
+_UI_Entity_type = Entity
+_UI_Connector_type = Connector
+_UI_AdaptableEntity_type = Adaptable Entity
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_NamedElement_name_feature = Name
+_UI_Unknown_feature = Unspecified
+
diff --git a/edu.kit.ipd.descartes.core.edit/plugin.xml b/edu.kit.ipd.descartes.core.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a76a8758c498c419d93c0040baa34602c2d31a9a
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/core/0.1"
+            class="edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.core.edit/pom.xml b/edu.kit.ipd.descartes.core.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..01346e66878ec872f44f9410e8fb264f4236eba8
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.core.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9d4c985f9345fd209ac83a74c14812ed9e6ece7
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/AdaptableEntityItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+
+import edu.kit.ipd.descartes.core.AdaptableEntity;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.core.AdaptableEntity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptableEntityItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdaptableEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AdaptableEntity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_AdaptableEntity_type") :
+			getString("_UI_AdaptableEntity_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9648a80f36722c911dedd48ed352c805d16cdc18
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/ConnectorItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+
+import edu.kit.ipd.descartes.core.Connector;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.core.Connector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConnectorItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConnectorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Connector)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Connector_type") :
+			getString("_UI_Connector_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..532a9845e9df8078bbc23cd5d6cc123c922bc4fc
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreEditPlugin.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Core edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class CoreEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final CoreEditPlugin INSTANCE = new CoreEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CoreEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     IdentifierEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..f5ff6fc754f170da55941be616771ae54a27924a
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/CoreItemProviderAdapterFactory.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+import edu.kit.ipd.descartes.core.util.CoreAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CoreItemProviderAdapterFactory extends CoreAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CoreItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d24ad4378699dbff5a2df66b2eec77e26e250cce
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/EntityItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+
+import edu.kit.ipd.descartes.core.CorePackage;
+import edu.kit.ipd.descartes.core.Entity;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProvider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.core.Entity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EntityItemProvider
+	extends IdentifierItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NamedElement_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
+				 CorePackage.Literals.NAMED_ELEMENT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Entity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Entity_type") :
+			getString("_UI_Entity_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Entity.class)) {
+			case CorePackage.ENTITY__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoreEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2f224858e65f79b40d932f9503d4307ed2df94d3
--- /dev/null
+++ b/edu.kit.ipd.descartes.core.edit/src/edu/kit/ipd/descartes/core/provider/NamedElementItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.core.provider;
+
+
+import edu.kit.ipd.descartes.core.CorePackage;
+import edu.kit.ipd.descartes.core.NamedElement;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.core.NamedElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NamedElementItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NamedElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NamedElement_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
+				 CorePackage.Literals.NAMED_ELEMENT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((NamedElement)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_NamedElement_type") :
+			getString("_UI_NamedElement_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(NamedElement.class)) {
+			case CorePackage.NAMED_ELEMENT__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return CoreEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.identifier.edit/.classpath b/edu.kit.ipd.descartes.identifier.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.identifier.edit/.project b/edu.kit.ipd.descartes.identifier.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..4643ed57e822b2931bfa8a8d3a36a8bbc9cf4d61
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.identifier.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..9fce12207332a334f66b4f79da77702eded40fdb
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.identifier.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.identifier.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.identifier.edit/build.properties b/edu.kit.ipd.descartes.identifier.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..528395856233aa160a073146fc888e8ee3673020
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/build.properties
@@ -0,0 +1,9 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.identifier.edit/plugin.properties b/edu.kit.ipd.descartes.identifier.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a6e8947ab73ad2b4984884e50020fb460509cdac
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/plugin.properties
@@ -0,0 +1,22 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Identifier Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Identifier_type = Identifier
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Identifier_id_feature = Id
+_UI_Unknown_feature = Unspecified
+
diff --git a/edu.kit.ipd.descartes.identifier.edit/plugin.xml b/edu.kit.ipd.descartes.identifier.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c616dec0a18064ec22bf9e79f80e48ee6ecc8a45
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/identifier/0.1"
+            class="edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.identifier.edit/pom.xml b/edu.kit.ipd.descartes.identifier.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1df918fc612bfefc9703c3952df483f7fd272a49
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.identifier.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc1eb63cffba5acd4bb9fc998efcd4d6da9a6495
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierEditPlugin.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.identifier.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Identifier edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class IdentifierEditPlugin extends EMFPlugin {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT";
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final IdentifierEditPlugin INSTANCE = new IdentifierEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IdentifierEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d2c584b84c24f8102a2b3daf6c2ed59eb41b59f
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProvider.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.identifier.provider;
+
+
+import edu.kit.ipd.descartes.identifier.Identifier;
+import edu.kit.ipd.descartes.identifier.IdentifierPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.identifier.Identifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifierItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT";
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IdentifierItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_id_feature", "_UI_Identifier_type"),
+				 IdentifierPackage.Literals.IDENTIFIER__ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Identifier)object).getId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Identifier_type") :
+			getString("_UI_Identifier_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Identifier.class)) {
+			case IdentifierPackage.IDENTIFIER__ID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return IdentifierEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc9a8f17ae7e6aa4515726c79fc188fd04af5b50
--- /dev/null
+++ b/edu.kit.ipd.descartes.identifier.edit/src/edu/kit/ipd/descartes/identifier/provider/IdentifierItemProviderAdapterFactory.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.identifier.provider;
+
+import edu.kit.ipd.descartes.identifier.util.IdentifierAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifierItemProviderAdapterFactory extends IdentifierAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT";
+
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IdentifierItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath b/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..fb24f81843ea9fea4bd88210fb59799dc55d2a59
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-man"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/.project b/edu.kit.ipd.descartes.mm.adaptation.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..059cadd0b9abb53e295ebec2e7b2652abc6ff9e3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.adaptation.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..81f5ad0095d0da2c668021cd1df145cfa0c025d7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptation.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.adaptation.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.adaptation;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.adaptationpoints;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.perfdatarepo;visibility:=reexport,
+ edu.kit.ipd.descartes.perfdatarepo.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties b/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4c518d702bb857cf6dcd7a7d8e70508f18776858
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/build.properties
@@ -0,0 +1,11 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/,\
+           src-man/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e10818d6968ea640b9caea9abc8da8fca1a593bd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAction_adaptationActionOperation_AdaptationActionOperation.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b07f693b58dd6007ddbb1f3328b72e048869213
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_ActionReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif
new file mode 100644
index 0000000000000000000000000000000000000000..df228332e97da0002a4d37014bffad23c9bd1140
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Branch.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17c76f85589d5314721cf04e34a791ecafa9b68
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_BranchAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d7c5af79864fea79bd032d317f21d20186d9c0c8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Loop.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5643b74f35289f8ebdd6dc51ba377623fb10581f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_LoopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b07f693b58dd6007ddbb1f3328b72e048869213
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Start.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bb0eee99169cd347715dca1f30378d424a9d0ef7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StartAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif
new file mode 100644
index 0000000000000000000000000000000000000000..17f115f632be56636be274451f037d05afdcf170
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_Stop.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dffc0a5ca466028783f0ab8ede814763b8e6fe
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationPlan_steps_StopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bb0eee99169cd347715dca1f30378d424a9d0ef7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_actions_Action.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4a6adcc9632f94e3f7f6f9c3df1711833b187d1e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_goal_OverallGoal.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e206651033fb95bef54b4531656c6e8bbce64d46
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_importDeclaration_ImportDeclaration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1a59694a811e0f7bd281b90d08436d79a03d3b55
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_parameters_Parameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..931730f4ef93e1cb04ad77c9a368044a7c7b0161
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_strategies_Strategy.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7d7c59b0d4aa9464846f6db28d495511066a9e67
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateAdaptationProcess_tactics_Tactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_branches_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionFalseBranch_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_conditionTrueBranch_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_falseBranch_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..11943a3c05dfdfeaaf575a1e3658808308036bdf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranchAction_trueBranch_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af3a295d908347198e73b116d7fab1e5e57d2c04
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateBranch_branches_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f14828dda92c203483cc21aece8c47152792bde1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoopAction_body_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0b5901d2142d6aaac4868bc7a97b8efe5e730a43
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateLoop_body_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d748696ff3a4d760ebf4dd9d0c6af30c9a96e944
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specification_Specification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d748696ff3a4d760ebf4dd9d0c6af30c9a96e944
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateObjective_specifications_Specification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6083e651fc97b8be3e843f837bd07f52a6251b84
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_hasObjective_Objective.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6083e651fc97b8be3e843f837bd07f52a6251b84
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateOverallGoal_objectives_Objective.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif
new file mode 100644
index 0000000000000000000000000000000000000000..051fac7db4dc28ebcb9f8d75ba28af74268860c6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_actions_Action.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f9e5fa823dae523cbf28d74b8e4f586df9098150
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_parameters_Parameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..064dd753f37e2cb898d8ce99bbaf2b968d7d6529
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_strategies_Strategy.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1571ae8334e424a299d1aeef74e6747bac5aab0f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateRepository_tactics_Tactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif
new file mode 100644
index 0000000000000000000000000000000000000000..788a4f2ce6eb526e832bb0b2b074a27683352908
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_actions_Action.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif
new file mode 100644
index 0000000000000000000000000000000000000000..de9650f4d1f0f8d387b79a61a0ec2457bd30562e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_goal_OverallGoal.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98225e0fd06f77676be846bb565f58034d0833ef
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_parameters_Parameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7938130156d8e423a667cdcb3270b4ab76550849
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_strategies_Strategy.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..99ae7757087e188240ff3538daedfcda470fe09c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_Tactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f7e0ea73df17734ebd060b0c1f3638ea7af0126e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStaRepository_tactics_WeightedTactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..997e434522761bb0741f11f33b621c2db8f51096
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_tactics_WeightedTactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5f8c2018a1c8f73a9321b5aab5c542bdb17ca0b2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_triggeringEvents_Event.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b9e96e9954d6d4bf70cf208a74232237b172f7d6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateStrategy_weightingFunction_WeightingFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..870d2b208f05123cec95dcfa3e92e1f61f09dcfb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateTactic_implementedPlan_AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d8d5fa98a50e056bfd2e555f6deffb89791f2bd5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/ctool16/CreateWeightingFunction_weightedMetrics_WeightedMetric.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Action.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ActionReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationActionOperation.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationOperation.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationPlan.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/AdaptationProcess.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Branch.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8a5c70cbd74c87cb3b1df383e0c242ede4660c3b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/BranchAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e4b530eca173b1070d5d876a0154bc370d8896b4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Event.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/ImportDeclaration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Loop.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/LoopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Objective.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2124f3e3ab2646fd6aec35b94fe003b565ba4c2c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/OverallGoal.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a3908bcf7b4ec0b29040bb1ef944c4d5a93fbb32
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Parameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Repository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b6925602975de13459862ee32e1b0d97549bf67
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Specification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4fb30e96873d2484faec9d508dcbdd69e73d82e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StaRepository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Start.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StartAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Stop.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/StopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Strategy.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/Tactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedMetric.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightedTactic.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.edit/icons/full/obj16/WeightingFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..57fc9e13e5f8fda7ef4c350146669af763be56c2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.properties
@@ -0,0 +1,166 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Adaptation Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Strategy_type = Strategy
+_UI_WeightingFunction_type = Weighting Function
+_UI_WeightedTactic_type = Weighted Tactic
+_UI_Objective_type = Objective
+_UI_Tactic_type = Tactic
+_UI_AbstractControlFlowElement_type = Abstract Control Flow Element
+_UI_Start_type = Start
+_UI_Stop_type = Stop
+_UI_Loop_type = Loop
+_UI_Branch_type = Branch
+_UI_ActionReference_type = Action Reference
+_UI_AdaptationPlan_type = Plan
+_UI_Event_type = Event
+_UI_Action_type = Action
+_UI_Repository_type = Repository
+_UI_OverallGoal_type = Overall Goal
+_UI_Parameter_type = Parameter
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Strategy_objective_feature = Objective
+_UI_Strategy_triggeringEvents_feature = Triggering Events
+_UI_Strategy_tactics_feature = Tactics
+_UI_Strategy_weightingFunction_feature = Weighting Function
+_UI_WeightingFunction_function_feature = Function
+_UI_WeightedTactic_uses_feature = Uses
+_UI_WeightedTactic_weight_feature = Weight
+_UI_Objective_specification_feature = Specification
+_UI_Tactic_implementedPlan_feature = Implemented Plan
+_UI_Tactic_inputParams_feature = Input Params
+_UI_Tactic_outputParam_feature = Output Param
+_UI_AbstractControlFlowElement_predecessor_feature = Predecessor
+_UI_AbstractControlFlowElement_successor_feature = Successor
+_UI_Loop_counter_feature = Counter
+_UI_Loop_body_feature = Body
+_UI_Branch_condition_feature = Condition
+_UI_Branch_branches_feature = Branches
+_UI_ActionReference_refersTo_feature = Refers To
+_UI_AdaptationPlan_steps_feature = Steps
+_UI_Event_triggers_feature = Triggers
+_UI_Action_outputParam_feature = Output Param
+_UI_Action_inputParams_feature = Input Params
+_UI_Action_referredAdaptationPoint_feature = Referred Adaptation Point
+_UI_Repository_tactics_feature = Tactics
+_UI_Repository_actions_feature = Actions
+_UI_Repository_strategies_feature = Strategies
+_UI_Repository_parameters_feature = Parameters
+_UI_OverallGoal_hasObjective_feature = Has Objective
+_UI_OverallGoal_description_feature = Description
+_UI_Parameter_name_feature = Name
+_UI_Parameter_type_feature = Type
+_UI_Unknown_feature = Unspecified
+
+_UI_StaRepository_type = Sta Repository
+_UI_StaRepository_tactics_feature = Tactics
+_UI_StaRepository_actions_feature = Actions
+_UI_StaRepository_strategies_feature = Strategies
+_UI_StaRepository_parameters_feature = Parameters
+_UI_WeightedTactic_currentWeight_feature = Current Weight
+_UI_WeightedTactic_defaultWeight_feature = Default Weight
+_UI_WeightedTactic_usedTactic_feature = Used Tactic
+_UI_Action_operationType_feature = Operation Type
+_UI_StartAction_type = Start Action
+_UI_StopAction_type = Stop Action
+_UI_LoopAction_type = Loop Action
+_UI_BranchAction_type = Branch Action
+_UI_LoopAction_counter_feature = Counter
+_UI_LoopAction_body_feature = Body
+_UI_BranchAction_condition_feature = Condition
+_UI_BranchAction_branches_feature = Branches
+_UI_WeightedMetric_type = Weighted Metric
+_UI_WeightingFunction_weightedMetrics_feature = Weighted Metrics
+_UI_WeightingFunction_calculatedImpact_feature = Calculated Impact
+_UI_WeightedMetric_value_feature = Value
+_UI_WeightedMetric_weightForMetric_feature = Weight For Metric
+_UI_WeightedTactic_lastImpact_feature = Last Impact
+_UI_StaRepository_goal_feature = Goal
+_UI_OverallGoal_objectives_feature = Objectives
+_UI_WeightedMetric_weight_feature = Weight
+_UI_WeightedMetric_metricType_feature = Metric Type
+_UI_AdaptationProcess_type = Process
+_UI_AdaptationProcess_tactics_feature = Tactics
+_UI_AdaptationProcess_actions_feature = Actions
+_UI_AdaptationProcess_strategies_feature = Strategies
+_UI_AdaptationProcess_parameters_feature = Parameters
+_UI_AdaptationProcess_goal_feature = Goal
+_UI_BranchAction_trueBranch_feature = True Branch
+_UI_BranchAction_falseBranch_feature = False Branch
+_UI_BranchAction_conditionTrueBranch_feature = Condition True Branch
+_UI_BranchAction_conditionFalseBranch_feature = Condition False Branch
+_UI_BranchAction_context_feature = Context
+_UI_AdaptationOperation_NOT_SET_literal = NOT_SET
+_UI_AdaptationOperation_SCALE_UP_literal = SCALE_UP
+_UI_AdaptationOperation_SCALE_DOWN_literal = SCALE_DOWN
+_UI_AdaptationOperation_SCALE_OUT_literal = SCALE_OUT
+_UI_AdaptationOperation_SCALE_IN_literal = SCALE_IN
+_UI_AdaptationOperation_MIGRATE_literal = MIGRATE
+_UI_AdaptationOperation_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST
+_UI_AdaptationOperation_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST
+_UI_AdaptationOperation_RANDOM_literal = RANDOM
+_UI_Action_adaptationActionScope_feature = Adaptation Action Scope
+_UI_Action_adaptationActionDirection_feature = Adaptation Action Direction
+_UI_AdaptationScope_ALL_literal = ALL
+_UI_AdaptationScope_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST
+_UI_AdaptationScope_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST
+_UI_AdaptationScope_RANDOM_literal = RANDOM
+_UI_AdaptationDirection_NOT_SET_literal = NOT_SET
+_UI_AdaptationDirection_INCREASE_literal = INCREASE
+_UI_AdaptationDirection_DECREASE_literal = DECREASE
+_UI_AdaptationDirection_MIGRATE_literal = MIGRATE
+_UI_AdaptationDirection_ANY_literal = ANY
+_UI_Action_adaptationOperation_feature = Adaptation Operation
+_UI_AdaptationOperation_ALL_literal = ALL
+_UI_AdaptationOperation_type = Operation
+_UI_AdaptationOperation_adaptationActionScope_feature = Adaptation Action Scope
+_UI_AdaptationOperation_adaptationActionDirection_feature = Adaptation Action Direction
+_UI_Parameter_NOT_SET_literal = NOT_SET
+_UI_Parameter_SCALE_UP_literal = SCALE_UP
+_UI_Parameter_SCALE_DOWN_literal = SCALE_DOWN
+_UI_Parameter_SCALE_OUT_literal = SCALE_OUT
+_UI_Parameter_SCALE_IN_literal = SCALE_IN
+_UI_Parameter_MIGRATE_literal = MIGRATE
+_UI_Parameter_LEAST_UTILIZED_FIRST_literal = LEAST_UTILIZED_FIRST
+_UI_Parameter_MOST_UTILIZED_FIRST_literal = MOST_UTILIZED_FIRST
+_UI_Parameter_RANDOM_literal = RANDOM
+_UI_AdaptationActionOperation_type = Action Operation
+_UI_Action_adaptationActionOperation_feature = Adaptation Action Operation
+_UI_AdaptationActionOperation_adaptationOperationScope_feature = Adaptation Operation Scope
+_UI_AdaptationActionOperation_adaptationOperationDirection_feature = Adaptation Operation Direction
+_UI_AdaptationScope_NOT_SET_literal = NOT_SET
+_UI_AdaptationScope_THIS_literal = THIS
+_UI_WeightedTactic_parentStrategy_feature = Parent Strategy
+_UI_Specification_type = Specification
+_UI_Specification_metricType_feature = Metric Type
+_UI_Specification_value_feature = Value
+_UI_Specification_operator_feature = Operator
+_UI_Specification_relationalOperator_feature = Relational Operator
+_UI_RelationalOperator_EQUAL_literal = EQUAL
+_UI_RelationalOperator_NOT_EQUAL_literal = NOT_EQUAL
+_UI_RelationalOperator_GREATER_literal = GREATER
+_UI_RelationalOperator_GREATER_EQUAL_literal = GREATER_EQUAL
+_UI_RelationalOperator_LESS_literal = LESS
+_UI_RelationalOperator_LESS_EQUAL_literal = LESS_EQUAL
+_UI_Objective_specifications_feature = Specifications
+_UI_WeightingFunction_WeightingFunction_feature = Weighting Function
+_UI_WeightingFunction_WeightingFunctionImplementation_feature = Weighting Function Implementation
+_UI_WeightingFunction_weightingFunctionImplementation_feature = Weighting Function Implementation
+_UI_Parameter_value_feature = Value
+_UI_ImportDeclaration_type = Import Declaration
+_UI_AdaptationProcess_importDeclaration_feature = Import Declaration
+_UI_ImportDeclaration_importURI_feature = Import URI
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d5cf4e1323152dcd67f932a308cc171350ea432
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/adaptation/0.1"
+            class="edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml b/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6a2471e495233b55b936794bace41c60f16e4f14
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.adaptation.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2516f3b835622e87d630238e4efe336e56b0b9e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProviderExtension.java
@@ -0,0 +1,26 @@
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+
+import edu.kit.ipd.descartes.mm.adaptation.Action;
+import edu.kit.ipd.descartes.mm.adaptation.ActionReference;
+
+public class ActionReferenceItemProviderExtension extends ActionReferenceItemProvider {
+
+    public ActionReferenceItemProviderExtension(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    @Override
+    public String getText(Object object) {
+        Action ref = ((ActionReference)object).getRefersTo();
+        
+        String label = ref == null ? 
+            null : 
+            ref.getName();
+        
+        return label == null || label.length() == 0 ?
+            getString("_UI_ActionReference_type") :
+            getString("_UI_ActionReference_type") + " " + label;
+    }
+}
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java
new file mode 100644
index 0000000000000000000000000000000000000000..4dc942e09d21075c29b849a5956a9d3d2ef6672e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProviderExtension.java
@@ -0,0 +1,32 @@
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationDirection;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationScope;
+
+public class AdaptationActionOperationItemProviderExtension extends AdaptationActionOperationItemProvider {
+
+    public AdaptationActionOperationItemProviderExtension(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+        // TODO Auto-generated constructor stub
+    }
+
+    @Override
+    public String getText(Object object) {
+        AdaptationScope scopeLabelValue = ((AdaptationActionOperation)object).getAdaptationOperationScope();
+        AdaptationDirection directionLabelValue = ((AdaptationActionOperation)object).getAdaptationOperationDirection();
+        
+        String label;
+        if (scopeLabelValue == null || directionLabelValue == null)
+            label = null;
+        else
+            label = directionLabelValue.toString() + ", " + scopeLabelValue.toString();
+        
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationActionOperation_type") :
+            getString("_UI_AdaptationActionOperation_type") + " " + label;
+    }
+    
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java
new file mode 100644
index 0000000000000000000000000000000000000000..63ac3f9d45660d456893f6e8c23ffa297fa83669
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src-man/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactoryExtension.java
@@ -0,0 +1,24 @@
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+import org.eclipse.emf.common.notify.Adapter;
+
+public class AdaptationItemProviderAdapterFactoryExtension extends AdaptationItemProviderAdapterFactory {
+    
+    @Override
+    public Adapter createAdaptationActionOperationAdapter() {
+        if (adaptationActionOperationItemProvider == null) {
+            adaptationActionOperationItemProvider = new AdaptationActionOperationItemProviderExtension(this);
+        }
+
+        return adaptationActionOperationItemProvider;
+    }
+
+    @Override
+    public Adapter createActionReferenceAdapter() {
+        if (actionReferenceItemProvider == null) {
+            actionReferenceItemProvider = new ActionReferenceItemProviderExtension(this);
+        }
+            
+        return actionReferenceItemProvider;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b90027a824b7e311b01b1ad8a15643e1747f74a5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AbstractControlFlowElementItemProvider.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AbstractControlFlowElement;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AbstractControlFlowElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractControlFlowElementItemProvider
+    extends IdentifierItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AbstractControlFlowElementItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addPredecessorPropertyDescriptor(object);
+            addSuccessorPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Predecessor feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPredecessorPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_AbstractControlFlowElement_predecessor_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_AbstractControlFlowElement_predecessor_feature", "_UI_AbstractControlFlowElement_type"),
+                 AdaptationPackage.Literals.ABSTRACT_CONTROL_FLOW_ELEMENT__PREDECESSOR,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Successor feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addSuccessorPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_AbstractControlFlowElement_successor_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_AbstractControlFlowElement_successor_feature", "_UI_AbstractControlFlowElement_type"),
+                 AdaptationPackage.Literals.ABSTRACT_CONTROL_FLOW_ELEMENT__SUCCESSOR,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((AbstractControlFlowElement)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AbstractControlFlowElement_type") :
+            getString("_UI_AbstractControlFlowElement_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d67103ae3dc5f65228b94cf7effa2410d3335da0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionItemProvider.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.Action;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Action} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ActionItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ActionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addOutputParamPropertyDescriptor(object);
+            addInputParamsPropertyDescriptor(object);
+            addReferredAdaptationPointPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Output Param feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addOutputParamPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Action_outputParam_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Action_outputParam_feature", "_UI_Action_type"),
+                 AdaptationPackage.Literals.ACTION__OUTPUT_PARAM,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Input Params feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addInputParamsPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Action_inputParams_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Action_inputParams_feature", "_UI_Action_type"),
+                 AdaptationPackage.Literals.ACTION__INPUT_PARAMS,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Referred Adaptation Point feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredAdaptationPointPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Action_referredAdaptationPoint_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Action_referredAdaptationPoint_feature", "_UI_Action_type"),
+                 AdaptationPackage.Literals.ACTION__REFERRED_ADAPTATION_POINT,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.ACTION__ADAPTATION_ACTION_OPERATION);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns Action.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Action"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Action)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Action_type") :
+            getString("_UI_Action_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Action.class)) {
+            case AdaptationPackage.ACTION__ADAPTATION_ACTION_OPERATION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ACTION__ADAPTATION_ACTION_OPERATION,
+                 AdaptationFactory.eINSTANCE.createAdaptationActionOperation()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..029402873fd9b08d98e2ed6d6f8b09ce45b56653
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ActionReferenceItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.ActionReference;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ActionReferenceItemProvider
+    extends AbstractControlFlowElementItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ActionReferenceItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addRefersToPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Refers To feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ActionReference_refersTo_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ActionReference_refersTo_feature", "_UI_ActionReference_type"),
+                 AdaptationPackage.Literals.ACTION_REFERENCE__REFERS_TO,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns ActionReference.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ActionReference"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((ActionReference)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ActionReference_type") :
+            getString("_UI_ActionReference_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..75cacd4765065016bc0fbe1102958daeb820dd0e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationActionOperationItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationScope;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationActionOperationItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationActionOperationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addAdaptationOperationScopePropertyDescriptor(object);
+            addAdaptationOperationDirectionPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Adaptation Operation Scope feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAdaptationOperationScopePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_AdaptationActionOperation_adaptationOperationScope_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_AdaptationActionOperation_adaptationOperationScope_feature", "_UI_AdaptationActionOperation_type"),
+                 AdaptationPackage.Literals.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_SCOPE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Adaptation Operation Direction feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAdaptationOperationDirectionPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_AdaptationActionOperation_adaptationOperationDirection_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_AdaptationActionOperation_adaptationOperationDirection_feature", "_UI_AdaptationActionOperation_type"),
+                 AdaptationPackage.Literals.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_DIRECTION,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns AdaptationActionOperation.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationActionOperation"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        AdaptationScope labelValue = ((AdaptationActionOperation)object).getAdaptationOperationScope();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationActionOperation_type") :
+            getString("_UI_AdaptationActionOperation_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(AdaptationActionOperation.class)) {
+            case AdaptationPackage.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_SCOPE:
+            case AdaptationPackage.ADAPTATION_ACTION_OPERATION__ADAPTATION_OPERATION_DIRECTION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..559e68e2dc02f1f56ac3950972119a17528cac76
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationEditPlugin.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin;
+
+import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Adaptation edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class AdaptationEditPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final AdaptationEditPlugin INSTANCE = new AdaptationEditPlugin();
+
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationEditPlugin() {
+        super
+          (new ResourceLocator [] {
+             AdaptationpointsEditPlugin.INSTANCE,
+             CoreEditPlugin.INSTANCE,
+             IdentifierEditPlugin.INSTANCE,
+             PerfdatarepoEditPlugin.INSTANCE,
+           });
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipsePlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..812e43906bd8beae6bd82681367bc3088ae61d26
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationItemProviderAdapterFactory.java
@@ -0,0 +1,656 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+import edu.kit.ipd.descartes.mm.adaptation.util.AdaptationAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationItemProviderAdapterFactory extends AdaptationAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+    /**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory parentAdapterFactory;
+
+    /**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+    /**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+    /**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationProcessItemProvider adaptationProcessItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAdaptationProcessAdapter() {
+        if (adaptationProcessItemProvider == null) {
+            adaptationProcessItemProvider = new AdaptationProcessItemProvider(this);
+        }
+
+        return adaptationProcessItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.OverallGoal} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected OverallGoalItemProvider overallGoalItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.OverallGoal}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createOverallGoalAdapter() {
+        if (overallGoalItemProvider == null) {
+            overallGoalItemProvider = new OverallGoalItemProvider(this);
+        }
+
+        return overallGoalItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Strategy} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected StrategyItemProvider strategyItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Strategy}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createStrategyAdapter() {
+        if (strategyItemProvider == null) {
+            strategyItemProvider = new StrategyItemProvider(this);
+        }
+
+        return strategyItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Event} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EventItemProvider eventItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Event}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createEventAdapter() {
+        if (eventItemProvider == null) {
+            eventItemProvider = new EventItemProvider(this);
+        }
+
+        return eventItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Objective} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ObjectiveItemProvider objectiveItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Objective}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createObjectiveAdapter() {
+        if (objectiveItemProvider == null) {
+            objectiveItemProvider = new ObjectiveItemProvider(this);
+        }
+
+        return objectiveItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Specification} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected SpecificationItemProvider specificationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Specification}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createSpecificationAdapter() {
+        if (specificationItemProvider == null) {
+            specificationItemProvider = new SpecificationItemProvider(this);
+        }
+
+        return specificationItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected WeightingFunctionItemProvider weightingFunctionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createWeightingFunctionAdapter() {
+        if (weightingFunctionItemProvider == null) {
+            weightingFunctionItemProvider = new WeightingFunctionItemProvider(this);
+        }
+
+        return weightingFunctionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected WeightedMetricItemProvider weightedMetricItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createWeightedMetricAdapter() {
+        if (weightedMetricItemProvider == null) {
+            weightedMetricItemProvider = new WeightedMetricItemProvider(this);
+        }
+
+        return weightedMetricItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected WeightedTacticItemProvider weightedTacticItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createWeightedTacticAdapter() {
+        if (weightedTacticItemProvider == null) {
+            weightedTacticItemProvider = new WeightedTacticItemProvider(this);
+        }
+
+        return weightedTacticItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Tactic} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TacticItemProvider tacticItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Tactic}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTacticAdapter() {
+        if (tacticItemProvider == null) {
+            tacticItemProvider = new TacticItemProvider(this);
+        }
+
+        return tacticItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.StartAction} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected StartActionItemProvider startActionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StartAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createStartActionAdapter() {
+        if (startActionItemProvider == null) {
+            startActionItemProvider = new StartActionItemProvider(this);
+        }
+
+        return startActionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.StopAction} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected StopActionItemProvider stopActionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StopAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createStopActionAdapter() {
+        if (stopActionItemProvider == null) {
+            stopActionItemProvider = new StopActionItemProvider(this);
+        }
+
+        return stopActionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected LoopActionItemProvider loopActionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createLoopActionAdapter() {
+        if (loopActionItemProvider == null) {
+            loopActionItemProvider = new LoopActionItemProvider(this);
+        }
+
+        return loopActionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected BranchActionItemProvider branchActionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createBranchActionAdapter() {
+        if (branchActionItemProvider == null) {
+            branchActionItemProvider = new BranchActionItemProvider(this);
+        }
+
+        return branchActionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ActionReferenceItemProvider actionReferenceItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ActionReference}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createActionReferenceAdapter() {
+        if (actionReferenceItemProvider == null) {
+            actionReferenceItemProvider = new ActionReferenceItemProvider(this);
+        }
+
+        return actionReferenceItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationPlanItemProvider adaptationPlanItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAdaptationPlanAdapter() {
+        if (adaptationPlanItemProvider == null) {
+            adaptationPlanItemProvider = new AdaptationPlanItemProvider(this);
+        }
+
+        return adaptationPlanItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Action} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ActionItemProvider actionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Action}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createActionAdapter() {
+        if (actionItemProvider == null) {
+            actionItemProvider = new ActionItemProvider(this);
+        }
+
+        return actionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationActionOperationItemProvider adaptationActionOperationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAdaptationActionOperationAdapter() {
+        if (adaptationActionOperationItemProvider == null) {
+            adaptationActionOperationItemProvider = new AdaptationActionOperationItemProvider(this);
+        }
+
+        return adaptationActionOperationItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.Parameter} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ParameterItemProvider parameterItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Parameter}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createParameterAdapter() {
+        if (parameterItemProvider == null) {
+            parameterItemProvider = new ParameterItemProvider(this);
+        }
+
+        return parameterItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ImportDeclarationItemProvider importDeclarationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createImportDeclarationAdapter() {
+        if (importDeclarationItemProvider == null) {
+            importDeclarationItemProvider = new ImportDeclarationItemProvider(this);
+        }
+
+        return importDeclarationItemProvider;
+    }
+
+    /**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+    /**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+    /**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+    /**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+    /**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+    /**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void dispose() {
+        if (adaptationProcessItemProvider != null) adaptationProcessItemProvider.dispose();
+        if (overallGoalItemProvider != null) overallGoalItemProvider.dispose();
+        if (strategyItemProvider != null) strategyItemProvider.dispose();
+        if (eventItemProvider != null) eventItemProvider.dispose();
+        if (objectiveItemProvider != null) objectiveItemProvider.dispose();
+        if (specificationItemProvider != null) specificationItemProvider.dispose();
+        if (weightingFunctionItemProvider != null) weightingFunctionItemProvider.dispose();
+        if (weightedMetricItemProvider != null) weightedMetricItemProvider.dispose();
+        if (weightedTacticItemProvider != null) weightedTacticItemProvider.dispose();
+        if (tacticItemProvider != null) tacticItemProvider.dispose();
+        if (startActionItemProvider != null) startActionItemProvider.dispose();
+        if (stopActionItemProvider != null) stopActionItemProvider.dispose();
+        if (loopActionItemProvider != null) loopActionItemProvider.dispose();
+        if (branchActionItemProvider != null) branchActionItemProvider.dispose();
+        if (actionReferenceItemProvider != null) actionReferenceItemProvider.dispose();
+        if (adaptationPlanItemProvider != null) adaptationPlanItemProvider.dispose();
+        if (actionItemProvider != null) actionItemProvider.dispose();
+        if (adaptationActionOperationItemProvider != null) adaptationActionOperationItemProvider.dispose();
+        if (parameterItemProvider != null) parameterItemProvider.dispose();
+        if (importDeclarationItemProvider != null) importDeclarationItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c15196830185d889d2a9a938d2dc7f6f311ba86
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationPlanItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationPlan} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationPlanItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationPlanItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns AdaptationPlan.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationPlan"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((AdaptationPlan)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationPlan_type") :
+            getString("_UI_AdaptationPlan_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(AdaptationPlan.class)) {
+            case AdaptationPackage.ADAPTATION_PLAN__STEPS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS,
+                 AdaptationFactory.eINSTANCE.createStartAction()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS,
+                 AdaptationFactory.eINSTANCE.createStopAction()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS,
+                 AdaptationFactory.eINSTANCE.createLoopAction()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS,
+                 AdaptationFactory.eINSTANCE.createBranchAction()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PLAN__STEPS,
+                 AdaptationFactory.eINSTANCE.createActionReference()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..83fe451a79b2d0a86770a8fa8dabcb1136fca3b8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/AdaptationProcessItemProvider.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationProcessItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationProcessItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__TACTICS);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__ACTIONS);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__STRATEGIES);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__PARAMETERS);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__GOAL);
+            childrenFeatures.add(AdaptationPackage.Literals.ADAPTATION_PROCESS__IMPORT_DECLARATION);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns AdaptationProcess.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationProcess"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((AdaptationProcess)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationProcess_type") :
+            getString("_UI_AdaptationProcess_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(AdaptationProcess.class)) {
+            case AdaptationPackage.ADAPTATION_PROCESS__TACTICS:
+            case AdaptationPackage.ADAPTATION_PROCESS__ACTIONS:
+            case AdaptationPackage.ADAPTATION_PROCESS__STRATEGIES:
+            case AdaptationPackage.ADAPTATION_PROCESS__PARAMETERS:
+            case AdaptationPackage.ADAPTATION_PROCESS__GOAL:
+            case AdaptationPackage.ADAPTATION_PROCESS__IMPORT_DECLARATION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__TACTICS,
+                 AdaptationFactory.eINSTANCE.createTactic()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__ACTIONS,
+                 AdaptationFactory.eINSTANCE.createAction()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__STRATEGIES,
+                 AdaptationFactory.eINSTANCE.createStrategy()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__PARAMETERS,
+                 AdaptationFactory.eINSTANCE.createParameter()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__GOAL,
+                 AdaptationFactory.eINSTANCE.createOverallGoal()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.ADAPTATION_PROCESS__IMPORT_DECLARATION,
+                 AdaptationFactory.eINSTANCE.createImportDeclaration()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb71c4fec87b6b574f643165496125623b2c24e9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/BranchActionItemProvider.java
@@ -0,0 +1,238 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.BranchAction;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.BranchAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BranchActionItemProvider
+    extends AbstractControlFlowElementItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public BranchActionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addContextPropertyDescriptor(object);
+            addConditionPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Context feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addContextPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_BranchAction_context_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_BranchAction_context_feature", "_UI_BranchAction_type"),
+                 AdaptationPackage.Literals.BRANCH_ACTION__CONTEXT,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Condition feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addConditionPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_BranchAction_condition_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_BranchAction_condition_feature", "_UI_BranchAction_type"),
+                 AdaptationPackage.Literals.BRANCH_ACTION__CONDITION,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH);
+            childrenFeatures.add(AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns BranchAction.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchAction"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((BranchAction)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_BranchAction_type") :
+            getString("_UI_BranchAction_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(BranchAction.class)) {
+            case AdaptationPackage.BRANCH_ACTION__CONDITION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case AdaptationPackage.BRANCH_ACTION__CONDITION_TRUE_BRANCH:
+            case AdaptationPackage.BRANCH_ACTION__CONDITION_FALSE_BRANCH:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH,
+                 AdaptationFactory.eINSTANCE.createAdaptationPlan()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH,
+                 AdaptationFactory.eINSTANCE.createAdaptationPlan()));
+    }
+
+    /**
+     * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+        Object childFeature = feature;
+        Object childObject = child;
+
+        boolean qualify =
+            childFeature == AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_TRUE_BRANCH ||
+            childFeature == AdaptationPackage.Literals.BRANCH_ACTION__CONDITION_FALSE_BRANCH;
+
+        if (qualify) {
+            return getString
+                ("_UI_CreateChild_text2",
+                 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+        }
+        return super.getCreateChildText(owner, feature, child, selection);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed5c9234859578f51468ee00278e5e204807c407
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/EventItemProvider.java
@@ -0,0 +1,126 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.Event;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Event} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EventItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EventItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns Event.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Event"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Event)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Event_type") :
+            getString("_UI_Event_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2bbd53f91180d84d85c5aaf28e07128f37765caa
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ImportDeclarationItemProvider.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.ImportDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImportDeclarationItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ImportDeclarationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addImportURIPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Import URI feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addImportURIPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ImportDeclaration_importURI_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ImportDeclaration_importURI_feature", "_UI_ImportDeclaration_type"),
+                 AdaptationPackage.Literals.IMPORT_DECLARATION__IMPORT_URI,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns ImportDeclaration.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ImportDeclaration"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((ImportDeclaration)object).getImportURI();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ImportDeclaration_type") :
+            getString("_UI_ImportDeclaration_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ImportDeclaration.class)) {
+            case AdaptationPackage.IMPORT_DECLARATION__IMPORT_URI:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9c4da2fa458acfde8345276d9848d2cbb2a0a68
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/LoopActionItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.LoopAction;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.LoopAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoopActionItemProvider
+    extends AbstractControlFlowElementItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public LoopActionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addCounterPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Counter feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addCounterPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_LoopAction_counter_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_LoopAction_counter_feature", "_UI_LoopAction_type"),
+                 AdaptationPackage.Literals.LOOP_ACTION__COUNTER,
+                 true,
+                 false,
+                 false,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.LOOP_ACTION__BODY);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns LoopAction.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopAction"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((LoopAction)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_LoopAction_type") :
+            getString("_UI_LoopAction_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(LoopAction.class)) {
+            case AdaptationPackage.LOOP_ACTION__COUNTER:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case AdaptationPackage.LOOP_ACTION__BODY:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.LOOP_ACTION__BODY,
+                 AdaptationFactory.eINSTANCE.createAdaptationPlan()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..20810db97576ab436dacd077c5e5e341595a8a55
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ObjectiveItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.Objective;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Objective} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ObjectiveItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ObjectiveItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.OBJECTIVE__SPECIFICATIONS);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns Objective.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Objective"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Objective)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Objective_type") :
+            getString("_UI_Objective_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Objective.class)) {
+            case AdaptationPackage.OBJECTIVE__SPECIFICATIONS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.OBJECTIVE__SPECIFICATIONS,
+                 AdaptationFactory.eINSTANCE.createSpecification()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e435292640fb6a1174e2756e59a5c393bc5e745
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/OverallGoalItemProvider.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.OverallGoal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.OverallGoal} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OverallGoalItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public OverallGoalItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addDescriptionPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Description feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescriptionPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_OverallGoal_description_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_OverallGoal_description_feature", "_UI_OverallGoal_type"),
+                 AdaptationPackage.Literals.OVERALL_GOAL__DESCRIPTION,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.OVERALL_GOAL__OBJECTIVES);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns OverallGoal.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/OverallGoal"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((OverallGoal)object).getDescription();
+        return label == null || label.length() == 0 ?
+            getString("_UI_OverallGoal_type") :
+            getString("_UI_OverallGoal_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(OverallGoal.class)) {
+            case AdaptationPackage.OVERALL_GOAL__DESCRIPTION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case AdaptationPackage.OVERALL_GOAL__OBJECTIVES:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.OVERALL_GOAL__OBJECTIVES,
+                 AdaptationFactory.eINSTANCE.createObjective()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a69e2aa9f0483c455164e503539176f807c8480
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/ParameterItemProvider.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.Parameter;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Parameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ParameterItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addNamePropertyDescriptor(object);
+            addTypePropertyDescriptor(object);
+            addValuePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Parameter_name_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_name_feature", "_UI_Parameter_type"),
+                 AdaptationPackage.Literals.PARAMETER__NAME,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Parameter_type_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_type_feature", "_UI_Parameter_type"),
+                 AdaptationPackage.Literals.PARAMETER__TYPE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addValuePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Parameter_value_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_value_feature", "_UI_Parameter_type"),
+                 AdaptationPackage.Literals.PARAMETER__VALUE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns Parameter.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Parameter"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Parameter)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Parameter_type") :
+            getString("_UI_Parameter_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Parameter.class)) {
+            case AdaptationPackage.PARAMETER__NAME:
+            case AdaptationPackage.PARAMETER__TYPE:
+            case AdaptationPackage.PARAMETER__VALUE:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e97bba365773c7a1408c4bb895fa9cfacc70e64
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/SpecificationItemProvider.java
@@ -0,0 +1,203 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.Specification;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Specification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SpecificationItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public SpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addMetricTypePropertyDescriptor(object);
+            addValuePropertyDescriptor(object);
+            addRelationalOperatorPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Metric Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMetricTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Specification_metricType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Specification_metricType_feature", "_UI_Specification_type"),
+                 AdaptationPackage.Literals.SPECIFICATION__METRIC_TYPE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addValuePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Specification_value_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Specification_value_feature", "_UI_Specification_type"),
+                 AdaptationPackage.Literals.SPECIFICATION__VALUE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Relational Operator feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRelationalOperatorPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Specification_relationalOperator_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Specification_relationalOperator_feature", "_UI_Specification_type"),
+                 AdaptationPackage.Literals.SPECIFICATION__RELATIONAL_OPERATOR,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns Specification.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Specification"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        Specification specification = (Specification)object;
+        return getString("_UI_Specification_type") + " " + specification.getValue();
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Specification.class)) {
+            case AdaptationPackage.SPECIFICATION__VALUE:
+            case AdaptationPackage.SPECIFICATION__RELATIONAL_OPERATOR:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2f64afecc975bb1eab2a5be2399ce7c90478b46a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StartActionItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.StartAction;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StartAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StartActionItemProvider
+    extends AbstractControlFlowElementItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public StartActionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns StartAction.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/StartAction"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((StartAction)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_StartAction_type") :
+            getString("_UI_StartAction_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0da9536efb720a1e136a1f8cce5092025e29740
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StopActionItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptation.StopAction;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.StopAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StopActionItemProvider
+    extends AbstractControlFlowElementItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public StopActionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns StopAction.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/StopAction"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((StopAction)object).getId();
+        return label == null || label.length() == 0 ?
+            getString("_UI_StopAction_type") :
+            getString("_UI_StopAction_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..513c733414016772f386c6cbc919a96d850561bf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/StrategyItemProvider.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.Strategy;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Strategy} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StrategyItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public StrategyItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addObjectivePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Objective feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addObjectivePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Strategy_objective_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Strategy_objective_feature", "_UI_Strategy_type"),
+                 AdaptationPackage.Literals.STRATEGY__OBJECTIVE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.STRATEGY__TRIGGERING_EVENTS);
+            childrenFeatures.add(AdaptationPackage.Literals.STRATEGY__TACTICS);
+            childrenFeatures.add(AdaptationPackage.Literals.STRATEGY__WEIGHTING_FUNCTION);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns Strategy.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Strategy"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Strategy)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Strategy_type") :
+            getString("_UI_Strategy_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Strategy.class)) {
+            case AdaptationPackage.STRATEGY__TRIGGERING_EVENTS:
+            case AdaptationPackage.STRATEGY__TACTICS:
+            case AdaptationPackage.STRATEGY__WEIGHTING_FUNCTION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.STRATEGY__TRIGGERING_EVENTS,
+                 AdaptationFactory.eINSTANCE.createEvent()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.STRATEGY__TACTICS,
+                 AdaptationFactory.eINSTANCE.createWeightedTactic()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.STRATEGY__WEIGHTING_FUNCTION,
+                 AdaptationFactory.eINSTANCE.createWeightingFunction()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b192348573459b197bf3563aaaf60bbb29caede5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/TacticItemProvider.java
@@ -0,0 +1,219 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.Tactic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.Tactic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TacticItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TacticItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addInputParamsPropertyDescriptor(object);
+            addOutputParamPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Input Params feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addInputParamsPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Tactic_inputParams_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Tactic_inputParams_feature", "_UI_Tactic_type"),
+                 AdaptationPackage.Literals.TACTIC__INPUT_PARAMS,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Output Param feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addOutputParamPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Tactic_outputParam_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Tactic_outputParam_feature", "_UI_Tactic_type"),
+                 AdaptationPackage.Literals.TACTIC__OUTPUT_PARAM,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.TACTIC__IMPLEMENTED_PLAN);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns Tactic.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Tactic"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Tactic)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Tactic_type") :
+            getString("_UI_Tactic_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Tactic.class)) {
+            case AdaptationPackage.TACTIC__IMPLEMENTED_PLAN:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.TACTIC__IMPLEMENTED_PLAN,
+                 AdaptationFactory.eINSTANCE.createAdaptationPlan()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..133fa9ab8dc16eddf8a794dbb80a0e9b51145db7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedMetricItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedMetric} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WeightedMetricItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public WeightedMetricItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addWeightPropertyDescriptor(object);
+            addMetricTypePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Weight feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addWeightPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedMetric_weight_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedMetric_weight_feature", "_UI_WeightedMetric_type"),
+                 AdaptationPackage.Literals.WEIGHTED_METRIC__WEIGHT,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Metric Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMetricTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedMetric_metricType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedMetric_metricType_feature", "_UI_WeightedMetric_type"),
+                 AdaptationPackage.Literals.WEIGHTED_METRIC__METRIC_TYPE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns WeightedMetric.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightedMetric"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((WeightedMetric)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_WeightedMetric_type") :
+            getString("_UI_WeightedMetric_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(WeightedMetric.class)) {
+            case AdaptationPackage.WEIGHTED_METRIC__WEIGHT:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..238192386d33f9f4fdb462c639939f7e72200c5f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightedTacticItemProvider.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightedTactic} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WeightedTacticItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public WeightedTacticItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addUsedTacticPropertyDescriptor(object);
+            addCurrentWeightPropertyDescriptor(object);
+            addDefaultWeightPropertyDescriptor(object);
+            addLastImpactPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Used Tactic feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUsedTacticPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedTactic_usedTactic_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_usedTactic_feature", "_UI_WeightedTactic_type"),
+                 AdaptationPackage.Literals.WEIGHTED_TACTIC__USED_TACTIC,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Current Weight feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addCurrentWeightPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedTactic_currentWeight_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_currentWeight_feature", "_UI_WeightedTactic_type"),
+                 AdaptationPackage.Literals.WEIGHTED_TACTIC__CURRENT_WEIGHT,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Default Weight feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDefaultWeightPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedTactic_defaultWeight_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_defaultWeight_feature", "_UI_WeightedTactic_type"),
+                 AdaptationPackage.Literals.WEIGHTED_TACTIC__DEFAULT_WEIGHT,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Last Impact feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addLastImpactPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightedTactic_lastImpact_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightedTactic_lastImpact_feature", "_UI_WeightedTactic_type"),
+                 AdaptationPackage.Literals.WEIGHTED_TACTIC__LAST_IMPACT,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns WeightedTactic.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightedTactic"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((WeightedTactic)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_WeightedTactic_type") :
+            getString("_UI_WeightedTactic_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(WeightedTactic.class)) {
+            case AdaptationPackage.WEIGHTED_TACTIC__CURRENT_WEIGHT:
+            case AdaptationPackage.WEIGHTED_TACTIC__DEFAULT_WEIGHT:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ffd470629d24ac36ac5819856764cf9b1cb223c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.edit/src/edu/kit/ipd/descartes/mm/adaptation/provider/WeightingFunctionItemProvider.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptation.WeightingFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WeightingFunctionItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public WeightingFunctionItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addWeightingFunctionImplementationPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Weighting Function Implementation feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addWeightingFunctionImplementationPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_WeightingFunction_weightingFunctionImplementation_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_WeightingFunction_weightingFunctionImplementation_feature", "_UI_WeightingFunction_type"),
+                 AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTING_FUNCTION_IMPLEMENTATION,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTED_METRICS);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns WeightingFunction.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/WeightingFunction"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((WeightingFunction)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_WeightingFunction_type") :
+            getString("_UI_WeightingFunction_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(WeightingFunction.class)) {
+            case AdaptationPackage.WEIGHTING_FUNCTION__WEIGHTING_FUNCTION_IMPLEMENTATION:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case AdaptationPackage.WEIGHTING_FUNCTION__WEIGHTED_METRICS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationPackage.Literals.WEIGHTING_FUNCTION__WEIGHTED_METRICS,
+                 AdaptationFactory.eINSTANCE.createWeightedMetric()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath b/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/.project b/edu.kit.ipd.descartes.mm.adaptation.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..e424ff5d24bdd25c4fedf546b22464cedc98c45c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.adaptation.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..016165f20dcbcb71d77463263745e07f52a1a2e5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptation.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.adaptation.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.adaptation.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.perfdatarepo.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties b/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..689b7281906a8495692dabb9df11ed27df1f312f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/obj16/AdaptationModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e976e0776d200e1ce72d13ee80784885faff018e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptation.editor/icons/full/wizban/NewAdaptation.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..91ae328624e8b805efc0ebba1c9628ba212f140f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.properties
@@ -0,0 +1,54 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Adaptation Editor
+providerName = www.example.org
+
+_UI_AdaptationEditor_menu = &Adaptation Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_adaptation_category = Adaptation
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_AdaptationModelWizard_label = Adaptation Model
+_UI_AdaptationModelWizard_description = Create a new Adaptation model
+
+_UI_AdaptationEditor_label = Adaptation Model Editor
+
+_UI_AdaptationEditorFilenameDefaultBase = My
+_UI_AdaptationEditorFilenameExtensions = adaptation
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..40591aec2aecfde7530af7d54698f2a724afe862
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/plugin.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.adaptation.category"
+            name="%_UI_Wizard_adaptation_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationModelWizardID"
+            name="%_UI_AdaptationModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.adaptation.category"
+            icon="icons/full/obj16/AdaptationModelFile.gif">
+         <description>%_UI_AdaptationModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditorID"
+            name="%_UI_AdaptationEditor_label"
+            icon="icons/full/obj16/AdaptationModelFile.gif"
+            extensions="adaptation"
+            class="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.adaptation.presentation.AdaptationActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml b/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c423bf35904c982acb1d508f7fdd3114c046e489
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.adaptation.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..d3c39fed354981bb906ef400b7485212226960ff
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationActionBarContributor.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Adaptation model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IEditorPart activeEditorPart;
+
+	/**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction showPropertiesViewAction =
+		new Action(AdaptationEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    AdaptationEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+	/**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction refreshViewerAction =
+		new Action(AdaptationEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createChildActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public AdaptationActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+	/**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("adaptation-settings"));
+        toolBarManager.add(new Separator("adaptation-additions"));
+    }
+
+	/**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditor_menu"), "edu.kit.ipd.descartes.mm.adaptationMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+	/**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+		
+	/**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+	/**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(AdaptationEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+	/**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+	/**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..b8c9630f470e2dffe02dc0699c54cc9d2b8f78ad
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditor.java
@@ -0,0 +1,1785 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactory;
+import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationItemProviderAdapterFactoryExtension;
+import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory;
+import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoItemProviderAdapterFactory;
+
+
+/**
+ * This is an example of a Adaptation model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected PropertySheetPage propertySheetPage;
+
+	/**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TreeViewer selectionViewer;
+
+	/**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TreeViewer parentViewer;
+
+	/**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TreeViewer treeViewer;
+
+	/**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ListViewer listViewer;
+
+	/**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TableViewer tableViewer;
+
+	/**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ViewerPane currentViewerPane;
+
+	/**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Viewer currentViewer;
+
+	/**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IPartListener partListener =
+		new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(AdaptationEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(AdaptationEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == AdaptationEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+	/**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected boolean updateProblemIndication = true;
+
+	/**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected EContentAdapter problemIndicationAdapter = 
+		new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+	/**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(AdaptationEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == AdaptationEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    AdaptationEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+	/**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(AdaptationEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+	/**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+	/**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.adaptation.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    AdaptationEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        AdaptationEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+	/**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+	/**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public AdaptationEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+	/**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated NOT
+     */
+	protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new AdaptationItemProviderAdapterFactoryExtension()); // Use my own editor extensions
+        adapterFactory.addAdapterFactory(new AdaptationpointsItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new PerfdatarepoItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+	/**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+			@Override
+	protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+	/**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+	/**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public Object getParent(Object object) {
+            return null;
+        }
+	}
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+	/**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+	/**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public Viewer getViewer() {
+        return currentViewer;
+    }
+
+	/**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+	/**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+    }
+
+	/**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.adaptation.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.adaptation.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+	/**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+	/**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+	/**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+	/**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+	/**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+	/**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+	/**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        AdaptationEditor.this.setSelectionToViewer(selection);
+                        AdaptationEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+	/**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+	/**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+	/**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            AdaptationEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+	/**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+	/**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+	/**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            AdaptationEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+	/**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ISelection getSelection() {
+        return editorSelection;
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+	/**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	private static String getString(String key) {
+        return AdaptationEditorPlugin.INSTANCE.getString(key);
+    }
+
+	/**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	private static String getString(String key, Object s1) {
+        return AdaptationEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+	/**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..515ffbba196b87b781b95a97c6506bf4394e9465
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationEditorPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin;
+
+import edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Adaptation editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class AdaptationEditorPlugin extends EMFPlugin {
+	/**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final AdaptationEditorPlugin INSTANCE = new AdaptationEditorPlugin();
+	
+	/**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	private static Implementation plugin;
+
+	/**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public AdaptationEditorPlugin() {
+        super
+            (new ResourceLocator [] {
+                AdaptationpointsEditPlugin.INSTANCE,
+                CoreEditPlugin.INSTANCE,
+                IdentifierEditPlugin.INSTANCE,
+                PerfdatarepoEditPlugin.INSTANCE,
+            });
+    }
+
+	/**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+	
+	/**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+	public static Implementation getPlugin() {
+        return plugin;
+    }
+	
+	/**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public Implementation() {
+            super();
+    
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..056dfa1d7064a74632f1f7fa79887cbd354f437f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptation.editor/src/edu/kit/ipd/descartes/mm/adaptation/presentation/AdaptationModelWizard.java
@@ -0,0 +1,628 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptation.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
+import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage;
+import edu.kit.ipd.descartes.mm.adaptation.provider.AdaptationEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationModelWizard extends Wizard implements INewWizard {
+	/**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected AdaptationPackage adaptationPackage = AdaptationPackage.eINSTANCE;
+
+	/**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected AdaptationFactory adaptationFactory = adaptationPackage.getAdaptationFactory();
+
+	/**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected AdaptationModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected AdaptationModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IStructuredSelection selection;
+
+	/**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IWorkbench workbench;
+
+	/**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected List<String> initialObjectNames;
+
+	/**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(AdaptationEditorPlugin.INSTANCE.getImage("full/wizban/NewAdaptation")));
+    }
+
+	/**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : adaptationPackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+	/**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected EObject createInitialModel() {
+        EClass eClass = (EClass)adaptationPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = adaptationFactory.create(eClass);
+        return rootObject;
+    }
+
+	/**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            AdaptationEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), AdaptationEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            AdaptationEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+	/**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class AdaptationModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public AdaptationModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+		/**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(AdaptationEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+	}
+
+	/**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class AdaptationModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo initialObjectField;
+
+		/**
+         * @generated
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         */
+		protected List<String> encodings;
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo encodingField;
+
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public AdaptationModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE); {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(AdaptationEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(AdaptationEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected ModifyListener validator =
+			new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getEncoding() {
+            return encodingField.getText();
+        }
+
+		/**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected String getLabel(String typeName) {
+            try {
+                return AdaptationEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                AdaptationEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(AdaptationEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+	}
+
+	/**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+		@Override
+	public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new AdaptationModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_label"));
+        newFileCreationPage.setDescription(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_description"));
+        newFileCreationPage.setFileName(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new AdaptationModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(AdaptationEditorPlugin.INSTANCE.getString("_UI_AdaptationModelWizard_label"));
+        initialObjectCreationPage.setDescription(AdaptationEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+	/**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..0e7522c470fe0fcf44ed42ee025fe17aa64980b1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.adaptationpoints.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..c94eef8fde74fa3411a3e875ea3c5243bf636090
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptationpoints.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.adaptationpoints.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.adaptationpoints;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a7d0fbc9612ac99568fa3b3c23f6fd2eafb7a160
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelEntityConfigurationRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..939ba2e496a51f281d6a365e73c493f4b2aa4c2c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateAdaptationPointDescriptions_adaptationPoints_ModelVariableConfigurationRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2f04e778db096fbf0a83f92071450b0a085872cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_PropertyRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fc3cd12da11ce5341142dbedd68768b5cee321b8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateModelEntityConfigurationRange_variationPossibility_SetOfConfigurations.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cfd10c2742c0926ee74de04f02e3e5964cc2bfb9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_maxValueConstraint_OclConstraint.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cfd10c2742c0926ee74de04f02e3e5964cc2bfb9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreatePropertyRange_minValueConstraint_OclConstraint.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8f2603b5337405879d0e669dbf20e582c22c9118
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/ctool16/CreateSetOfConfigurations_valueConstraint_OclConstraint.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/AdaptationPointDescriptions.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelEntityConfigurationRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/ModelVariableConfigurationRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/OclConstraint.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a3908bcf7b4ec0b29040bb1ef944c4d5a93fbb32
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/PropertyRange.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b6925602975de13459862ee32e1b0d97549bf67
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/icons/full/obj16/SetOfConfigurations.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..79d22bddb23f6388fd225e9b6955c67c8d613d08
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.properties
@@ -0,0 +1,48 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Adaptationpoints Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_AdaptationPointDescriptions_type = Adaptation Point Descriptions
+_UI_AdaptationPoint_type = Adaptation Point
+_UI_ModelVariableConfigurationRange_type = Model Variable Configuration Range
+_UI_ModelEntityConfigurationRange_type = Model Entity Configuration Range
+_UI_VariationType_type = Variation Type
+_UI_PropertyRange_type = Property Range
+_UI_SetOfConfigurations_type = Set Of Configurations
+_UI_OclConstraint_type = Ocl Constraint
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_AdaptationPointDescriptions_adaptationPoints_feature = Adaptation Points
+_UI_ModelVariableConfigurationRange_adaptableEntity_feature = Adaptable Entity
+_UI_ModelVariableConfigurationRange_minValue_feature = Min Value
+_UI_ModelVariableConfigurationRange_maxValue_feature = Max Value
+_UI_ModelEntityConfigurationRange_variationPossibility_feature = Variation Possibility
+_UI_ModelEntityConfigurationRange_entity_feature = Entity
+_UI_PropertyRange_minValueConstraint_feature = Min Value Constraint
+_UI_PropertyRange_maxValueConstraint_feature = Max Value Constraint
+_UI_SetOfConfigurations_valueConstraint_feature = Value Constraint
+_UI_SetOfConfigurations_variants_feature = Variants
+_UI_OclConstraint_oclString_feature = Ocl String
+_UI_Unknown_feature = Unspecified
+
+_UI_OperationType_SCALE_UP_literal = SCALE_UP
+_UI_OperationType_SCALE_OUT_literal = SCALE_OUT
+_UI_OperationType_SCALE_DOWN_literal = SCALE_DOWN
+_UI_OperationType_SCALE_IN_literal = SCALE_IN
+_UI_OperationType_NOT_SET_literal = NOT_SET
+_UI_OperationType_ANY_literal = ANY
+_UI_ModelEntityConfigurationRange_adaptableEntity_feature = Adaptable Entity
+_UI_OperationType_MIGRATE_literal = MIGRATE
+_UI_OclConstraint_name_feature = Name
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6bd0dd684086b26f31077d3e6afa9a097f3938a2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/adaptationpoints/0.1"
+            class="edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7bc54b51e249096c9f66e9198020d4f11faaaa03
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.adaptationpoints.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a81552146afd0b2ebfe745ee6a4c49dd92e6be9c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointDescriptionsItemProvider.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationPointDescriptionsItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationPointDescriptionsItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns AdaptationPointDescriptions.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/AdaptationPointDescriptions"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((AdaptationPointDescriptions)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationPointDescriptions_type") :
+            getString("_UI_AdaptationPointDescriptions_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(AdaptationPointDescriptions.class)) {
+            case AdaptationpointsPackage.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS,
+                 AdaptationpointsFactory.eINSTANCE.createModelVariableConfigurationRange()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.ADAPTATION_POINT_DESCRIPTIONS__ADAPTATION_POINTS,
+                 AdaptationpointsFactory.eINSTANCE.createModelEntityConfigurationRange()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationpointsEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c31ed3281b8c1616ef505b1c2843d1b964081662
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationPointItemProvider.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPoint;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPoint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationPointItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationPointItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((AdaptationPoint)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AdaptationPoint_type") :
+            getString("_UI_AdaptationPoint_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationpointsEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..a889ef41e1109226793d07309b2f936dcb5c30ea
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsEditPlugin.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Adaptationpoints edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class AdaptationpointsEditPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final AdaptationpointsEditPlugin INSTANCE = new AdaptationpointsEditPlugin();
+
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationpointsEditPlugin() {
+        super
+          (new ResourceLocator [] {
+             CoreEditPlugin.INSTANCE,
+             IdentifierEditPlugin.INSTANCE,
+           });
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipsePlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3473686960bf0fb2d55590a5f14d5e7f28e0496
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/AdaptationpointsItemProviderAdapterFactory.java
@@ -0,0 +1,320 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.util.AdaptationpointsAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationpointsItemProviderAdapterFactory extends AdaptationpointsAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+    /**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory parentAdapterFactory;
+
+    /**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+    /**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+    /**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationpointsItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationPointDescriptionsItemProvider adaptationPointDescriptionsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPointDescriptions}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAdaptationPointDescriptionsAdapter() {
+        if (adaptationPointDescriptionsItemProvider == null) {
+            adaptationPointDescriptionsItemProvider = new AdaptationPointDescriptionsItemProvider(this);
+        }
+
+        return adaptationPointDescriptionsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ModelVariableConfigurationRangeItemProvider modelVariableConfigurationRangeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createModelVariableConfigurationRangeAdapter() {
+        if (modelVariableConfigurationRangeItemProvider == null) {
+            modelVariableConfigurationRangeItemProvider = new ModelVariableConfigurationRangeItemProvider(this);
+        }
+
+        return modelVariableConfigurationRangeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ModelEntityConfigurationRangeItemProvider modelEntityConfigurationRangeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createModelEntityConfigurationRangeAdapter() {
+        if (modelEntityConfigurationRangeItemProvider == null) {
+            modelEntityConfigurationRangeItemProvider = new ModelEntityConfigurationRangeItemProvider(this);
+        }
+
+        return modelEntityConfigurationRangeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertyRangeItemProvider propertyRangeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createPropertyRangeAdapter() {
+        if (propertyRangeItemProvider == null) {
+            propertyRangeItemProvider = new PropertyRangeItemProvider(this);
+        }
+
+        return propertyRangeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected SetOfConfigurationsItemProvider setOfConfigurationsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createSetOfConfigurationsAdapter() {
+        if (setOfConfigurationsItemProvider == null) {
+            setOfConfigurationsItemProvider = new SetOfConfigurationsItemProvider(this);
+        }
+
+        return setOfConfigurationsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected OclConstraintItemProvider oclConstraintItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createOclConstraintAdapter() {
+        if (oclConstraintItemProvider == null) {
+            oclConstraintItemProvider = new OclConstraintItemProvider(this);
+        }
+
+        return oclConstraintItemProvider;
+    }
+
+    /**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+    /**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+    /**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+    /**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+    /**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+    /**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void dispose() {
+        if (adaptationPointDescriptionsItemProvider != null) adaptationPointDescriptionsItemProvider.dispose();
+        if (modelVariableConfigurationRangeItemProvider != null) modelVariableConfigurationRangeItemProvider.dispose();
+        if (modelEntityConfigurationRangeItemProvider != null) modelEntityConfigurationRangeItemProvider.dispose();
+        if (propertyRangeItemProvider != null) propertyRangeItemProvider.dispose();
+        if (setOfConfigurationsItemProvider != null) setOfConfigurationsItemProvider.dispose();
+        if (oclConstraintItemProvider != null) oclConstraintItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..78347b11b4c506511e86e0fb27c26e9b7348f0f5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelEntityConfigurationRangeItemProvider.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelEntityConfigurationRangeItemProvider
+    extends AdaptationPointItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ModelEntityConfigurationRangeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addAdaptableEntityPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Adaptable Entity feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAdaptableEntityPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ModelEntityConfigurationRange_adaptableEntity_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ModelEntityConfigurationRange_adaptableEntity_feature", "_UI_ModelEntityConfigurationRange_type"),
+                 AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__ADAPTABLE_ENTITY,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns ModelEntityConfigurationRange.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelEntityConfigurationRange"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((ModelEntityConfigurationRange)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ModelEntityConfigurationRange_type") :
+            getString("_UI_ModelEntityConfigurationRange_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ModelEntityConfigurationRange.class)) {
+            case AdaptationpointsPackage.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY,
+                 AdaptationpointsFactory.eINSTANCE.createPropertyRange()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.MODEL_ENTITY_CONFIGURATION_RANGE__VARIATION_POSSIBILITY,
+                 AdaptationpointsFactory.eINSTANCE.createSetOfConfigurations()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..de845e7148c9ce1be2d4e412bff32c28ed89f8bc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/ModelVariableConfigurationRangeItemProvider.java
@@ -0,0 +1,191 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelVariableConfigurationRangeItemProvider
+    extends AdaptationPointItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ModelVariableConfigurationRangeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addAdaptableEntityPropertyDescriptor(object);
+            addMinValuePropertyDescriptor(object);
+            addMaxValuePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Adaptable Entity feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAdaptableEntityPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ModelVariableConfigurationRange_adaptableEntity_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_adaptableEntity_feature", "_UI_ModelVariableConfigurationRange_type"),
+                 AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__ADAPTABLE_ENTITY,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Min Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinValuePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ModelVariableConfigurationRange_minValue_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_minValue_feature", "_UI_ModelVariableConfigurationRange_type"),
+                 AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__MIN_VALUE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Max Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxValuePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ModelVariableConfigurationRange_maxValue_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ModelVariableConfigurationRange_maxValue_feature", "_UI_ModelVariableConfigurationRange_type"),
+                 AdaptationpointsPackage.Literals.MODEL_VARIABLE_CONFIGURATION_RANGE__MAX_VALUE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns ModelVariableConfigurationRange.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelVariableConfigurationRange"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((ModelVariableConfigurationRange)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ModelVariableConfigurationRange_type") :
+            getString("_UI_ModelVariableConfigurationRange_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ModelVariableConfigurationRange.class)) {
+            case AdaptationpointsPackage.MODEL_VARIABLE_CONFIGURATION_RANGE__MIN_VALUE:
+            case AdaptationpointsPackage.MODEL_VARIABLE_CONFIGURATION_RANGE__MAX_VALUE:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..92740a6fa949dcf907c1c90cf5afbc466946e8a5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/OclConstraintItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.OclConstraint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OclConstraintItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public OclConstraintItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addOclStringPropertyDescriptor(object);
+            addNamePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Ocl String feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addOclStringPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_OclConstraint_oclString_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_OclConstraint_oclString_feature", "_UI_OclConstraint_type"),
+                 AdaptationpointsPackage.Literals.OCL_CONSTRAINT__OCL_STRING,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_OclConstraint_name_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_OclConstraint_name_feature", "_UI_OclConstraint_type"),
+                 AdaptationpointsPackage.Literals.OCL_CONSTRAINT__NAME,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns OclConstraint.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/OclConstraint"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((OclConstraint)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_OclConstraint_type") :
+            getString("_UI_OclConstraint_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(OclConstraint.class)) {
+            case AdaptationpointsPackage.OCL_CONSTRAINT__OCL_STRING:
+            case AdaptationpointsPackage.OCL_CONSTRAINT__NAME:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationpointsEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..92e02d436474be071357c1baab7f40207f872a16
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/PropertyRangeItemProvider.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.PropertyRange} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PropertyRangeItemProvider
+    extends VariationTypeItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public PropertyRangeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT);
+            childrenFeatures.add(AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns PropertyRange.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyRange"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        return getString("_UI_PropertyRange_type");
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(PropertyRange.class)) {
+            case AdaptationpointsPackage.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT:
+            case AdaptationpointsPackage.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT,
+                 AdaptationpointsFactory.eINSTANCE.createOclConstraint()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT,
+                 AdaptationpointsFactory.eINSTANCE.createOclConstraint()));
+    }
+
+    /**
+     * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+        Object childFeature = feature;
+        Object childObject = child;
+
+        boolean qualify =
+            childFeature == AdaptationpointsPackage.Literals.PROPERTY_RANGE__MIN_VALUE_CONSTRAINT ||
+            childFeature == AdaptationpointsPackage.Literals.PROPERTY_RANGE__MAX_VALUE_CONSTRAINT;
+
+        if (qualify) {
+            return getString
+                ("_UI_CreateChild_text2",
+                 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+        }
+        return super.getCreateChildText(owner, feature, child, selection);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3e6e5fd55ba85858fdee3819b8257bcd3c626ef
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/SetOfConfigurationsItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.SetOfConfigurations} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SetOfConfigurationsItemProvider
+    extends VariationTypeItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public SetOfConfigurationsItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addVariantsPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Variants feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVariantsPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_SetOfConfigurations_variants_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_SetOfConfigurations_variants_feature", "_UI_SetOfConfigurations_type"),
+                 AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VARIANTS,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns SetOfConfigurations.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/SetOfConfigurations"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        return getString("_UI_SetOfConfigurations_type");
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(SetOfConfigurations.class)) {
+            case AdaptationpointsPackage.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (AdaptationpointsPackage.Literals.SET_OF_CONFIGURATIONS__VALUE_CONSTRAINT,
+                 AdaptationpointsFactory.eINSTANCE.createOclConstraint()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e90956ea3188d2ac9d0b922f2b0c2847f541333
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.edit/src/edu/kit/ipd/descartes/mm/adaptationpoints/provider/VariationTypeItemProvider.java
@@ -0,0 +1,109 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.adaptationpoints.VariationType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VariationTypeItemProvider
+    extends ItemProviderAdapter
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public VariationTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        return getString("_UI_VariationType_type");
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return AdaptationpointsEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..fbd4900e76c5c042b39c95afac0eaaed9db196e2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.adaptationpoints.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..c204a1b45583d5284b318675c7f911ace94f2141
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.adaptationpoints.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.adaptationpoints.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.adaptationpoints.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4d9a82160beb3ea4d11f4567740d097ef1feba81
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/obj16/AdaptationpointsModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3da3019300095d7b0014b76a54ad3de0acf7f891
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/icons/full/wizban/NewAdaptationpoints.gif differ
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..dc88c79c9ab010894336240e6ea16a98a8b4739d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.properties
@@ -0,0 +1,54 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Adaptationpoints Editor
+providerName = www.example.org
+
+_UI_AdaptationpointsEditor_menu = &Adaptation Points Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_adaptation_category = Adaptation
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_AdaptationpointsModelWizard_label = Adaptation Points Model
+_UI_AdaptationpointsModelWizard_description = Create a new Adaptation Points model
+
+_UI_AdaptationpointsEditor_label = Adaptation Points Model Editor
+
+_UI_AdaptationpointsEditorFilenameDefaultBase = My
+_UI_AdaptationpointsEditorFilenameExtensions = adaptationpoints
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0c5b7725c6853a35d2663c411bf7a1f8bef2fea
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/plugin.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.adaptation.category"
+            name="%_UI_Wizard_adaptation_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsModelWizardID"
+            name="%_UI_AdaptationpointsModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.adaptation.category"
+            icon="icons/full/obj16/AdaptationpointsModelFile.gif">
+         <description>%_UI_AdaptationpointsModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditorID"
+            name="%_UI_AdaptationpointsEditor_label"
+            icon="icons/full/obj16/AdaptationpointsModelFile.gif"
+            extensions="adaptationpoints"
+            class="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.adaptationpoints.presentation.AdaptationpointsActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1900a29f19ece18367d44dc870e53270c123bd5e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.adaptationpoints.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..02e1acc062211717d938ddba90e1673c47f169b8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsActionBarContributor.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Adaptationpoints model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationpointsActionBarContributor
+    extends EditingDomainActionBarContributor
+    implements ISelectionChangedListener {
+    /**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IEditorPart activeEditorPart;
+
+    /**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionProvider selectionProvider;
+
+    /**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction showPropertiesViewAction =
+        new Action(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction refreshViewerAction =
+        new Action(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createChildActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createChildMenuManager;
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createSiblingActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createSiblingMenuManager;
+
+    /**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationpointsActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+    /**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("adaptationpoints-settings"));
+        toolBarManager.add(new Separator("adaptationpoints-additions"));
+    }
+
+    /**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditor_menu"), "edu.kit.ipd.descartes.mm.adaptationpointsMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+    /**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+        
+    /**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+    /**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+    /**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..47ec273058e049e31ba1779ef27da28efe26dda4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditor.java
@@ -0,0 +1,1819 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Adaptationpoints model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationpointsEditor
+    extends MultiPageEditorPart
+    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+    /**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdapterFactoryEditingDomain editingDomain;
+
+    /**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory adapterFactory;
+
+    /**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IContentOutlinePage contentOutlinePage;
+
+    /**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStatusLineManager contentOutlineStatusLineManager;
+
+    /**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer contentOutlineViewer;
+
+    /**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertySheetPage propertySheetPage;
+
+    /**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer selectionViewer;
+
+    /**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer parentViewer;
+
+    /**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewer;
+
+    /**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ListViewer listViewer;
+
+    /**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TableViewer tableViewer;
+
+    /**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewerWithColumns;
+
+    /**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ViewerPane currentViewerPane;
+
+    /**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Viewer currentViewer;
+
+    /**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionChangedListener selectionChangedListener;
+
+    /**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+    /**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+    /**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+    /**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IPartListener partListener =
+        new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(AdaptationpointsEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(AdaptationpointsEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == AdaptationpointsEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+    /**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+    /**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+    /**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean updateProblemIndication = true;
+
+    /**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EContentAdapter problemIndicationAdapter = 
+        new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+    /**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IResourceChangeListener resourceChangeListener =
+        new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(AdaptationpointsEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == AdaptationpointsEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(AdaptationpointsEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+    /**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+    /**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.adaptationpoints.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+    /**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationpointsEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+    /**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new AdaptationpointsItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+    /**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+            @Override
+    protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+    /**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+    /**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object getParent(Object object) {
+            return null;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+    /**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+    /**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Viewer getViewer() {
+        return currentViewer;
+    }
+
+    /**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+    /**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+    }
+
+    /**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.adaptationpoints.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.adaptationpoints.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+    /**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), AdaptationpointsEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+    /**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+    /**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+    /**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+    /**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+    /**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+    /**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        AdaptationpointsEditor.this.setSelectionToViewer(selection);
+                        AdaptationpointsEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+    /**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+    /**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+    /**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+    /**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+    /**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ISelection getSelection() {
+        return editorSelection;
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+    /**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key) {
+        return AdaptationpointsEditorPlugin.INSTANCE.getString(key);
+    }
+
+    /**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key, Object s1) {
+        return AdaptationpointsEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+    /**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2c57bdf39d8f0f47355cd94660d5aa7344a0eda
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsEditorPlugin.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Adaptationpoints editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class AdaptationpointsEditorPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final AdaptationpointsEditorPlugin INSTANCE = new AdaptationpointsEditorPlugin();
+    
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdaptationpointsEditorPlugin() {
+        super
+            (new ResourceLocator [] {
+                CoreEditPlugin.INSTANCE,
+                IdentifierEditPlugin.INSTANCE,
+            });
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+    
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+    
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipseUIPlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+    
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ec1b12f6c93a84be572f3029fed7998ade6181f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.adaptationpoints.editor/src/edu/kit/ipd/descartes/mm/adaptationpoints/presentation/AdaptationpointsModelWizard.java
@@ -0,0 +1,628 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.adaptationpoints.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsFactory;
+import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage;
+import edu.kit.ipd.descartes.mm.adaptationpoints.provider.AdaptationpointsEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AdaptationpointsModelWizard extends Wizard implements INewWizard {
+    /**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List<String> FILE_EXTENSIONS =
+        Collections.unmodifiableList(Arrays.asList(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameExtensions").split("\\s*,\\s*")));
+
+    /**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String FORMATTED_FILE_EXTENSIONS =
+        AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+    /**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationpointsPackage adaptationpointsPackage = AdaptationpointsPackage.eINSTANCE;
+
+    /**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationpointsFactory adaptationpointsFactory = adaptationpointsPackage.getAdaptationpointsFactory();
+
+    /**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationpointsModelWizardNewFileCreationPage newFileCreationPage;
+
+    /**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdaptationpointsModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+    /**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStructuredSelection selection;
+
+    /**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IWorkbench workbench;
+
+    /**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected List<String> initialObjectNames;
+
+    /**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(AdaptationpointsEditorPlugin.INSTANCE.getImage("full/wizban/NewAdaptationpoints")));
+    }
+
+    /**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : adaptationpointsPackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+    /**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EObject createInitialModel() {
+        EClass eClass = (EClass)adaptationpointsPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = adaptationpointsFactory.create(eClass);
+        return rootObject;
+    }
+
+    /**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            AdaptationpointsEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+    /**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class AdaptationpointsModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public AdaptationpointsModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+        /**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(AdaptationpointsEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+    }
+
+    /**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class AdaptationpointsModelWizardInitialObjectCreationPage extends WizardPage {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo initialObjectField;
+
+        /**
+         * @generated
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         */
+        protected List<String> encodings;
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo encodingField;
+
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public AdaptationpointsModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE); {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected ModifyListener validator =
+            new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getEncoding() {
+            return encodingField.getText();
+        }
+
+        /**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected String getLabel(String typeName) {
+            try {
+                return AdaptationpointsEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                AdaptationpointsEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+    }
+
+    /**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+        @Override
+    public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new AdaptationpointsModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_label"));
+        newFileCreationPage.setDescription(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_description"));
+        newFileCreationPage.setFileName(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new AdaptationpointsModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_AdaptationpointsModelWizard_label"));
+        initialObjectCreationPage.setDescription(AdaptationpointsEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+    /**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..4a6ebf9e8360e893b780530ab1581ecc08f1e14c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.applicationlevel.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..4aa5dd945b6a081f8e55f4206b68a89db9290179
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.functions.provider,
+ edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider,
+ edu.kit.ipd.descartes.mm.applicationlevel.provider,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.provider,
+ edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider,
+ edu.kit.ipd.descartes.mm.applicationlevel.system.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..86fde1e236e11f6c4dc311658422f3043fe630ec
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_fineGrainedBehavior_FineGrainedBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9d6e42e4548dd882b82535ee0b1a8a743697dfca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBasicComponent_semaphores_Semaphore.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6153c8dfcbb5bf74fcfd547e96699c6daf8b6bca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4ec7362a76edfdda6fd5c3df0fd86745b5428e12
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7e487021af0d3dd87f258c62e08efcfd91ee8858
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c565965f8fcf5d4e3dd4075d22170487bf8a19f4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c0ac967d854aea6a6b29133ad69e8418e1bd5836
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98a66f134f020b6ada9f93b8ac04713fd7b3c813
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1010ed82e50374c77a8a0d88ea93f182fd9dfbb4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..822c544671bf421833386e40d0121d6dbb20b120
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4d10d577799a0407a8112dbd0d90fb6a5b446af6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5217be62850c1c0a3e804b9a394cfbe9da399dcd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_left_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6153c8dfcbb5bf74fcfd547e96699c6daf8b6bca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4ec7362a76edfdda6fd5c3df0fd86745b5428e12
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7e487021af0d3dd87f258c62e08efcfd91ee8858
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c565965f8fcf5d4e3dd4075d22170487bf8a19f4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c0ac967d854aea6a6b29133ad69e8418e1bd5836
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe0e4b2b82e6066937d4eb71e085a14fc08a7399
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98a66f134f020b6ada9f93b8ac04713fd7b3c813
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1010ed82e50374c77a8a0d88ea93f182fd9dfbb4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b9c0cab08bc0a6bf8324584ed33f0dc5bf1e5da5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..822c544671bf421833386e40d0121d6dbb20b120
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..539282628a7e969261bc0994edd169be63eeae28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4d10d577799a0407a8112dbd0d90fb6a5b446af6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5217be62850c1c0a3e804b9a394cfbe9da399dcd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBinaryBooleanExpression_right_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2a9f5b6928b2456bf9f6fc47ae2535889b5c0e62
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBlackBoxBehavior_responseTime_ResponseTime.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b6bdc3869b057fbd574b64c38a85d8b80bc06f68
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoolSampleList_items_BoolSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..388fb52f1e2049dff174ff2a29e88a1d19c96cae
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBoxedPDF_sample_ContinuousSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif
new file mode 100644
index 0000000000000000000000000000000000000000..08b62b9af29ea343d501ce0ba5c87e57af6c8edb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branchProbabilities_BranchProbabilities.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..561e20c16f11bcad56ed8fc8d1854ce82c8ad336
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateBranchAction_branches_ComponentInternalBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ca92866c7c7c0fb603c4d3e7cd4178d3fd27fa60
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_externalCallFrequency_ExternalCallFrequency.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif
new file mode 100644
index 0000000000000000000000000000000000000000..180d9c7786e78f9e7162ba1d3b3c6730dc20bd9d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCoarseGrainedBehavior_resourceDemand_ResourceDemand.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_left_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComparison_right_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..38e8cc2ed101d225c6b37ca7a9dbcf5e850964d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_AcquireAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..63dbadf56c1af14114366d6697983a0f50002383
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_BranchAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e81c185d38b35ce49942524d635ef2c98a61fb79
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ExternalCallAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f7a01deebad20b92a21abcdb077dceb55be93ac9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ForkAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..43035507eedd309b9910045b7f9e30f0fc0f3463
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_InternalAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e81c185d38b35ce49942524d635ef2c98a61fb79
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_LoopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dc6202681644db2106daa7cdfb8c35be612215
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComponentInternalBehavior_actions_ReleaseAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1264e5e43bcba74cdc2b994b5378f2243933f837
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyConnectors_AssemblyConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b0b8b572db5e6bef45771670672f3610690329c5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_assemblyContexts_AssemblyContext.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..43703db98548be04b6058fcf85cb6e223b032b1a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_providingDelegationConnectors_ProvidingDelegationConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1f0855e9a49b9d3ca74e703d16a2accd5a05ded6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateComposedStructure_requiringDelegationConnectors_RequiringDelegationConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e279dec056fbe4b50037776c91154dd8baa267cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateCompositeDataType_innerDeclarations_InnerDeclaration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b033b9d17bec867a04fbef0481c6e0bbd76f9000
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_ExplicitDescription.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateControlFlowVariable_explicitDescription_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4524ef7000f8e6ecfb2f67c83526c5f3c0aeac3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_dependentComponentInstanceReference_ComponentInstanceReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4524ef7000f8e6ecfb2f67c83526c5f3c0aeac3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDependencyPropagationRelationship_independentComponentInstanceReferences_ComponentInstanceReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6e87a232021b899090f3a47cc3af536add4cf89b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateDoubleSampleList_items_DoubleSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1f3ec4289f0ec49374f81098c47632ef2e190133
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateEnumSampleList_items_EnumSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..841cd276e7788a1a7994230d719a45af6a2b99b4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6678f806946a78b5bda02d4f339724d4fd792d8c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2bcab8a03614b63044472de612bc36f82074150b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74497a786ce594f5a4114a19cb448cd63fcbb6aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ce1701a10bdf6a576719ae7252f8894d83302136
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5cd8911d56a0f52a97021644bf3529931d5d4ee8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16e695e34119d5cfb541d0c17bd25e312a5c5243
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2bcab8a03614b63044472de612bc36f82074150b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9ff2342489cd049bc6ec22b0b193ccebb5bc7821
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe10b8e7be48682bff854c1ea3c88372d2107ac0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c31e7a2bca96a72adbfc36bbcfb3e5ef83866ace
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74497a786ce594f5a4114a19cb448cd63fcbb6aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fcbb6405902ee778c70618c569442e794a8f1691
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe10b8e7be48682bff854c1ea3c88372d2107ac0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9975318d32d006b4fdbebe65db4de1d7c0d6ca68
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1c0d080785c940302e6106e1ea8bf122d4ea11d9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExplicitDescription_expression_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif
new file mode 100644
index 0000000000000000000000000000000000000000..027f1b702718a54abdad340f25abd1f6f0f8419f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallAction_externalCall_ExternalCall.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif
new file mode 100644
index 0000000000000000000000000000000000000000..027f1b702718a54abdad340f25abd1f6f0f8419f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_externalCall_ExternalCall.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateExternalCallFrequency_frequency_CallFrequency.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..40e5eedcdbe510e8293fc0f4ba1eadebb701805c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFineGrainedBehavior_behavior_ComponentInternalBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e268a9e4429250b626a3bc50a1dc7fb68295c2c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateForkAction_forkedBehaviors_ComponentInternalBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f61f1983011465fb694356efbdca7452b94f81ce
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a163af34f267844b121ad8f81ed8c357a9792b2e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8966d1170904f3105bdc7267a8b67ad1b7c5b27c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b402369f15786aaffd55f7567877f6922f8e7c6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7936184f76ea9bfbd5bb1ad60b6b19feefe52ec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bd2a29ab6f1c79d7d460bd7181ff2ef6f96feb91
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d2a1980b82f0d9f03bc8b546babbfbfb34125da
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8966d1170904f3105bdc7267a8b67ad1b7c5b27c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9d46aad43a1956bd0ad1e024d11c53c591303e55
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0b417a5937218fd30d9525e730a1d219cf169629
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..063a8534d3e95cf65b984bb4bbc2714b1433fc7c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b402369f15786aaffd55f7567877f6922f8e7c6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b2c0939bd6bdeca02531aa0e4aaea8e716a74d3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0b417a5937218fd30d9525e730a1d219cf169629
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..59763f447c16316d2a761cf78707e3cb70653ef8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d2b476631944606c6e65384e5e1bde5d12181dd5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateFunction_parameters_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_condition_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_falseExp_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..55d7be5a9128f0d36af3f3cc3b8845552495c686
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66a52f706ce3c45ef529352b1ec3ba414051d035
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..68ad5bdffffa9420bbdc0df4f6f0f96fdc1c17bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..96cdc6db4b6a247f64a9aea357ac56dc6814e2e6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3bc59373400ad70d5d73874659d7a3f11e9ce4db
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a18b783b5acd8150d28ea34c09a49bc924ef82bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f809a28cc7227bf020f4f5d0187bb1ce201458d5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..278cd8af6a478ccfbaa39620e52662730c0b2187
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b447c2433a351d5178a946f0186d6daea227c7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1b76a8a7e8193b06280007dec31fe041784f4477
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cbc9f8d4452a84872fb2b3fd6aba108fac48d276
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c6407cdae5f3df5dff418abff0c5584771712f2d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5206c2e2d481cc58be6d48f50e5a5b70b8c259ef
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIfElseExpression_trueExp_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..58e344bde6e67edf637479de523bc72b9485e0f3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateIntSampleList_items_IntSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7f3140706575745c5706a629156c3511075bf5f5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_blackBoxBehavior_BlackBoxBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4aaad5a4cd75b9a48b2e286f73426d1ba570b32f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingEntity_interfaceProvidingRoles_InterfaceProvidingRole.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2a8a6d1e38bb13d6fa2ac65f9f78c8862a761a28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceProvidingRequiringEntity_coarseGrainedBehavior_CoarseGrainedBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d4b7df4075d485a77853612103ac0e598f8c9089
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterfaceRequiringEntity_interfaceRequiringRoles_InterfaceRequiringRole.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ee915d49e60111fe4f541f493f9a78e9230aee0a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInterface_signatures_Signature.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif
new file mode 100644
index 0000000000000000000000000000000000000000..262c4cbb9c21b8358e4ed47357f786c8b0e48963
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateInternalAction_resourceDemand_ResourceDemand.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9e4b0fb72072c8f6f9cb738d6722aa174db6a9e1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopBodyBehavior_ComponentInternalBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b71213d94286ac9d3bc5f69abad09e809000e962
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateLoopAction_loopIterationCount_LoopIterationCount.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8fe680b4db8abcd1b1258e91ccf7742c7713c13e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateModelVariable_scopeSet_ScopeSet.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_base_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b41d35c74d4e99b46edbe11dabaa4977556bd89
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..79a0b583136b39863ef161953ac6b8b2415723f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f11ad8983f40c1bf791d3530e425f8b69dd81339
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7acbca393c021e295ffe87c630d705272c87c73c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..72a560fe4a20eeaec2d85131af777c8f68e86c4e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4369fd0a4e279f9038fd569299dca091c0adec7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8804a9339337ed84b5ccbb48b6c7907c41b45da
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2d3a78e68de7e4f8ea5ffa36e2c650ec9bc1c61f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3744cee6aecf55e4ca927e288d505ed20309ab19
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..506a19bf586b9a22bcaf4bdfac52b7a211515a53
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..66cbc4c04812c284aa31798c94ad16de8cb8b5cd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2ea8fe4fb00ce181ff32e3e618125fd43a4fa29
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0c070475d5d3eb93f7c7217f8f3e985d1ef83077
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreatePower_exponent_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..29f98e74f3139e4f7fb6bb50c7d71dc24cb4a917
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_BoolSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..431ba00e4299e1710a110f10d373136688af69dc
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_DoubleSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3da98f774369141f4654a5bcd2bbcdb33eadef6e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_EnumSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..59e174d67ca4d29995fbe4aba5a797f67e4d0c98
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProbabilityMassFunction_samples_IntSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0f9364baeebd68fcf2f2dec0086bb32bb281d282
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57dceaeb0fe00cb3a7cc923a564d7c886b03b40d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4833facbbbe2e81dbf0a255d06a51ec1c7580442
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16301136d1900ee7e82fcba9ce78e7211e6ee42d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..794791ad9f0ed2e2b2ef655bbc8a37934f7733e3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94fcc9b70088516f072b5053844526c811159300
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..171603a7477054ce1620bba297b31810f90f07e9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..babb084892c4d14f28525b05b99b0ecd71c070ed
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cf6dfd56a6d651e98ec7c60e9aec23851457687f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_left_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0f9364baeebd68fcf2f2dec0086bb32bb281d282
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57dceaeb0fe00cb3a7cc923a564d7c886b03b40d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4833facbbbe2e81dbf0a255d06a51ec1c7580442
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a8861542f93fe939b6541db275cf7a9314565442
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..16301136d1900ee7e82fcba9ce78e7211e6ee42d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75937a9df9fa9ac9e2f7ccbb603bc58ddd3aac77
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..794791ad9f0ed2e2b2ef655bbc8a37934f7733e3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94fcc9b70088516f072b5053844526c811159300
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c819bceac85b17d6ddf4528634b1c9eade85f3c8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..171603a7477054ce1620bba297b31810f90f07e9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d08a6f84a0349c6c6d745bd33039a9674db30fdb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..babb084892c4d14f28525b05b99b0ecd71c070ed
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cf6dfd56a6d651e98ec7c60e9aec23851457687f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateProduct_right_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28d7cba309af0031fd81430272f6a986c93062b8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..81bed353002b5878eb2af720dbd012ddc6101d2f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dbd19ede270d3cac0415be640c33b63e4b122331
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83824fbf1ff96492d11694251fc70b689c1e120a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..758dafb7cd607cb64fb329445c0d76e298381756
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4e47629dccd1a3ceb230a3cbff1ef729b8ecbe01
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9f85940ddf591c7f87372bfa13e6bee574e86224
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRandomVariable_probFunction_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c0805c47e8f1d91341ea911d3911dfd5a6d5855b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRelationship_explicitDescription_ExplicitDescription.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89d8767bf56c38fd34720d1577c45b61dc8817ca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_BasicComponent.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9b19f705944427e17a1e9dcb69b79d3466837f80
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_CompositeComponent.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ec9a814da6c63196082a15ae263ced39edef2bcb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_components_SubSystem.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CollectionDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_CompositeDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..064dd753f37e2cb898d8ce99bbaf2b968d7d6529
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_datatypes_PrimitiveDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif
new file mode 100644
index 0000000000000000000000000000000000000000..381214b7725a0ba12c093604e1b4bf4c563cc604
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_imports_Import.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif
new file mode 100644
index 0000000000000000000000000000000000000000..396a4d777ec58bb09a606e602d9361edefe10f20
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateRepository_interfaces_Interface.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b033b9d17bec867a04fbef0481c6e0bbd76f9000
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_ExplicitDescription.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResourceDemand_explicitDescription_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e6f8fad0d56e14396397814d02ce5b92bc22fdd8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_ExplicitDescription.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fcfec345ba6a1d1598e5ae691736c4a5740a9df1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateResponseTime_explicitDescription_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4b78f56080a04681383139082715692470f6a348
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencedVariableReference_InfluencedVariableReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..776c80f6941746bf9722ccfc686f54495ade6cd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..961acc569eeb7e4c29325471ff08355036e604fd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ExternalCallReturnParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b7e2f30c26a2406b1f2f4addcc24ad457934b4de
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ServiceInputParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e050d2d87343dbe95b13b8aec73571759a357b8b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateServiceBehaviorAbstraction_influencingParameter_ShadowParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3090830045ce6bf1b0f2f3100b6322a6e93d4eda
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateSignature_parameters_Parameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..04aab9257b410114d814aa6c4591dbf71f20b349
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9ac141af672d33e778eb5683c7ada59c0c468c93
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12ec17b7cf21b8fa552e66383c5d5ffc0f473328
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b42bd7b416b8f97563664cd539a9b6a73cfe0df
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0d8e38fd5b70a70ce1dcade2f13fa443cd5a5e6f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6875c5d9205616b899b4aea3b33f6b9b41138bcf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..942aab31ac211bec367f60f03e1ff847bb4ba5aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_left_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..04aab9257b410114d814aa6c4591dbf71f20b349
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9ac141af672d33e778eb5683c7ada59c0c468c93
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12ec17b7cf21b8fa552e66383c5d5ffc0f473328
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b42bd7b416b8f97563664cd539a9b6a73cfe0df
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0d8e38fd5b70a70ce1dcade2f13fa443cd5a5e6f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..468d5f998b24bae07fbaae0ca702b830f9a635c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6875c5d9205616b899b4aea3b33f6b9b41138bcf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d415ad7a8c90ab0d2815152c2b5b5d21547ecb7a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28ad8b8deeeb6d4b57a3c7226967bac0e0d632b5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..942aab31ac211bec367f60f03e1ff847bb4ba5aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e8bebbfd88d81d8a817b103676a9119729aaa37a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a1607f910083346345671e52588d6acdb6f1dd0f
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateTerm_right_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c05a41849689a719a2c5c69a55df481451fc980a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..385b36595f65a969076a1f527677d0e96cf79d51
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af07ba12a2bdf3e480696fa3388fd266e8ad87c3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif
new file mode 100644
index 0000000000000000000000000000000000000000..908375cea5aebb62d3cd94b436b77ed1f6dbdbda
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Comparison.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..464e623af1bec3cb9169427f8df20d5108dce5cc
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..38d77bbab6c0d9efba0dd5521fc028ef50978388
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fc34e45332d798cca5ae2b823a9ca1ab4c0954c0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af07ba12a2bdf3e480696fa3388fd266e8ad87c3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3423b903ca3cf68d0fc3f574b8f2ed48e5e63820
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..959b8924b24669468c75f3fe603543e3d2c5cc08
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9c7efc49c09f042f89d2bd727f3c1d9e788c1301
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif
new file mode 100644
index 0000000000000000000000000000000000000000..908375cea5aebb62d3cd94b436b77ed1f6dbdbda
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Power.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1d2f734b1512dac405e7b55fbdba0935aec78f4b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif
new file mode 100644
index 0000000000000000000000000000000000000000..959b8924b24669468c75f3fe603543e3d2c5cc08
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Product.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1f8189adbeb9c651b1e073744529291b07715292
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_Term.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..883ce93b4303d7e81ab88f53bb8a3a3cf3eae2e6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/ctool16/CreateUnaryBooleanExpression_inner_UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AbstractAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AcquireAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/AssemblyContext.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BasicComponent.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BinaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BlackBoxBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8d381f0b327e1289745a7e8ea72b5cc7b782bfe
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoolSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BooleanLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BoxedPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8a5c70cbd74c87cb3b1df383e0c242ede4660c3b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/BranchProbabilities.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CallFrequency.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CoarseGrainedBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CollectionDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInstanceReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ComponentInternalBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeComponent.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/CompositeDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousPDF.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ef56c140853105ca812564e9b12a76413c8c3fb9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ContinuousSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif
new file mode 100644
index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyPropagationRelationship.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DependencyRelationship.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/DoubleSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..136e3b27269e84a045f9b528614d7dfd316e444c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/EnumSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExplicitDescription.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExponentialDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCall.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallFrequency.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..badaab0664ae45de5d990f64638197daeabf31bf
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ExternalCallReturnParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FineGrainedBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ForkAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/FormalParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Function.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..be22463d2919f13a6345bad3166fc216c3f0942a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IfElseExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Import.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencedVariableReference.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InfluencingParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InnerDeclaration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntLiteral.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif
new file mode 100644
index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/IntSampleList.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Interface.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceProvidingRole.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InterfaceRequiringRole.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/InternalAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Literal.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..caf2804510dc36959fb4e045e8af91d01229dcd7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/LoopIterationCount.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif
new file mode 100644
index 0000000000000000000000000000000000000000..35ef84e20e26f1cef1dcd7ae80d192fd40472368
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/NormalDistribution.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b1f8afa47661703c49bd5fa535dcb1342deb6fc4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/PrimitiveDataType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b3643da048a40135b62eed5100cac5afe1ecef3c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityDensityFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ea58a657dc0c287f6bb84e6cbd38008c96713db3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProbabilityMassFunction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ProvidingDelegationConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ReleaseAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Repository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif
new file mode 100644
index 0000000000000000000000000000000000000000..94c953e013baf5c1efe99489cbbf6fc39dd41341
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RepositoryComponent.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/RequiringDelegationConnector.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResourceDemand.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ResponseTime.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Sample.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed8747474012f8278002a9785026a1a40155b192
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Scope.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ScopeSet.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Semaphore.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ServiceInputParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/ShadowParameter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/Signature.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif
new file mode 100644
index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/SubSystem.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/System.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.edit/icons/full/obj16/UnaryBooleanExpression.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7153164503c15a011612bca545dd19398cd4a8c5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.properties
@@ -0,0 +1,319 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Applicationlevel Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Expression_type = Expression
+_UI_ExplicitDescription_type = Explicit Description
+_UI_Function_type = Function
+_UI_FormalParameter_type = Formal Parameter
+_UI_Atom_type = Atom
+_UI_IfElseExpression_type = If Else Expression
+_UI_BinaryBooleanExpression_type = Binary Boolean Expression
+_UI_UnaryBooleanExpression_type = Unary Boolean Expression
+_UI_Comparison_type = Comparison
+_UI_Term_type = Term
+_UI_Product_type = Product
+_UI_Power_type = Power
+_UI_RandomVariable_type = Random Variable
+_UI_ProbabilityFunction_type = Probability Function
+_UI_Literal_type = Literal
+_UI_BooleanLiteral_type = Boolean Literal
+_UI_IntLiteral_type = Int Literal
+_UI_DoubleLiteral_type = Double Literal
+_UI_ProbabilityMassFunction_type = Probability Mass Function
+_UI_SampleList_type = Sample List
+_UI_Sample_type = Sample
+_UI_DoubleSample_type = Double Sample
+_UI_IntSample_type = Int Sample
+_UI_BoolSample_type = Bool Sample
+_UI_EnumSample_type = Enum Sample
+_UI_IntSampleList_type = Int Sample List
+_UI_DoubleSampleList_type = Double Sample List
+_UI_BoolSampleList_type = Bool Sample List
+_UI_EnumSampleList_type = Enum Sample List
+_UI_ProbabilityDensityFunction_type = Probability Density Function
+_UI_BoxedPDF_type = Boxed PDF
+_UI_ContinuousSample_type = Continuous Sample
+_UI_ContinuousPDF_type = Continuous PDF
+_UI_NormalDistribution_type = Normal Distribution
+_UI_ExponentialDistribution_type = Exponential Distribution
+_UI_ModelVariable_type = Model Variable
+_UI_ScopeSet_type = Scope Set
+_UI_Scope_type = Scope
+_UI_ControlFlowVariable_type = Control Flow Variable
+_UI_InfluencedVariableReference_type = Influenced Variable Reference
+_UI_InfluencingParameter_type = Influencing Parameter
+_UI_ShadowParameter_type = Shadow Parameter
+_UI_Relationship_type = Relationship
+_UI_DependencyRelationship_type = Dependency Relationship
+_UI_DependencyPropagationRelationship_type = Dependency Propagation Relationship
+_UI_ComponentInstanceReference_type = Component Instance Reference
+_UI_CallParameter_type = Call Parameter
+_UI_ServiceInputParameter_type = Service Input Parameter
+_UI_ExternalCallReturnParameter_type = External Call Return Parameter
+_UI_ExternalCallParameter_type = External Call Parameter
+_UI_Role_type = Role
+_UI_InterfaceProvidingEntity_type = Interface Providing Entity
+_UI_InterfaceRequiringEntity_type = Interface Requiring Entity
+_UI_InterfaceProvidingRequiringEntity_type = Interface Providing Requiring Entity
+_UI_Import_type = Import
+_UI_InterfaceRequiringRole_type = Interface Requiring Role
+_UI_InterfaceProvidingRole_type = Interface Providing Role
+_UI_ComposedStructure_type = Composed Structure
+_UI_ComposedProvidingRequiringEntity_type = Composed Providing Requiring Entity
+_UI_Interface_type = Interface
+_UI_Signature_type = Signature
+_UI_Parameter_type = Parameter
+_UI_Repository_type = Repository
+_UI_RepositoryComponent_type = Component
+_UI_BasicComponent_type = Basic Component
+_UI_Semaphore_type = Semaphore
+_UI_CompositeComponent_type = Composite Component
+_UI_SubSystem_type = Sub System
+_UI_DataType_type = Data Type
+_UI_CollectionDataType_type = Collection Data Type
+_UI_CompositeDataType_type = Composite Data Type
+_UI_InnerDeclaration_type = Inner Declaration
+_UI_PrimitiveDataType_type = Primitive Data Type
+_UI_AssemblyContext_type = Assembly Context
+_UI_AssemblyConnector_type = Assembly Connector
+_UI_DelegationConnector_type = Delegation Connector
+_UI_ProvidingDelegationConnector_type = Providing Delegation Connector
+_UI_RequiringDelegationConnector_type = Requiring Delegation Connector
+_UI_ServiceBehaviorAbstraction_type = Service Behavior Abstraction
+_UI_FineGrainedBehavior_type = Fine Grained Behavior
+_UI_ComponentInternalBehavior_type = Component Internal Behavior
+_UI_AbstractAction_type = Abstract Action
+_UI_AcquireAction_type = Acquire Action
+_UI_ReleaseAction_type = Release Action
+_UI_InternalAction_type = Internal Action
+_UI_ForkAction_type = Fork Action
+_UI_BranchAction_type = Branch Action
+_UI_BranchProbabilities_type = Branch Probabilities
+_UI_LoopAction_type = Loop Action
+_UI_LoopIterationCount_type = Loop Iteration Count
+_UI_ExternalCallAction_type = External Call Action
+_UI_ExternalCall_type = External Call
+_UI_ResourceDemand_type = Resource Demand
+_UI_CoarseGrainedBehavior_type = Coarse Grained Behavior
+_UI_ExternalCallFrequency_type = External Call Frequency
+_UI_CallFrequency_type = Call Frequency
+_UI_BlackBoxBehavior_type = Black Box Behavior
+_UI_ResponseTime_type = Response Time
+_UI_System_type = System
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_ExplicitDescription_specification_feature = Specification
+_UI_ExplicitDescription_expression_feature = Expression
+_UI_Function_name_feature = Name
+_UI_Function_parameters_feature = Parameters
+_UI_FormalParameter_value_feature = Value
+_UI_IfElseExpression_condition_feature = Condition
+_UI_IfElseExpression_trueExp_feature = True Exp
+_UI_IfElseExpression_falseExp_feature = False Exp
+_UI_BinaryBooleanExpression_left_feature = Left
+_UI_BinaryBooleanExpression_operation_feature = Operation
+_UI_BinaryBooleanExpression_right_feature = Right
+_UI_UnaryBooleanExpression_inner_feature = Inner
+_UI_Comparison_left_feature = Left
+_UI_Comparison_operation_feature = Operation
+_UI_Comparison_right_feature = Right
+_UI_Term_left_feature = Left
+_UI_Term_operation_feature = Operation
+_UI_Term_right_feature = Right
+_UI_Product_left_feature = Left
+_UI_Product_operation_feature = Operation
+_UI_Product_right_feature = Right
+_UI_Power_base_feature = Base
+_UI_Power_exponent_feature = Exponent
+_UI_RandomVariable_probFunction_feature = Prob Function
+_UI_BooleanLiteral_value_feature = Value
+_UI_IntLiteral_value_feature = Value
+_UI_DoubleLiteral_value_feature = Value
+_UI_ProbabilityMassFunction_samples_feature = Samples
+_UI_DoubleSample_value_feature = Value
+_UI_DoubleSample_probability_feature = Probability
+_UI_IntSample_value_feature = Value
+_UI_IntSample_probability_feature = Probability
+_UI_BoolSample_value_feature = Value
+_UI_BoolSample_probability_feature = Probability
+_UI_EnumSample_value_feature = Value
+_UI_EnumSample_probability_feature = Probability
+_UI_IntSampleList_items_feature = Items
+_UI_DoubleSampleList_items_feature = Items
+_UI_BoolSampleList_items_feature = Items
+_UI_EnumSampleList_items_feature = Items
+_UI_BoxedPDF_sample_feature = Sample
+_UI_ContinuousSample_value_feature = Value
+_UI_ContinuousSample_probability_feature = Probability
+_UI_NormalDistribution_mu_feature = Mu
+_UI_NormalDistribution_sigma_feature = Sigma
+_UI_ExponentialDistribution_rate_feature = Rate
+_UI_ModelVariable_scopeSet_feature = Scope Set
+_UI_ScopeSet_scope_feature = Scope
+_UI_Scope_scope_feature = Scope
+_UI_ControlFlowVariable_characterization_feature = Characterization
+_UI_ControlFlowVariable_explicitDescription_feature = Explicit Description
+_UI_InfluencedVariableReference_getInfluencedVariable_feature = Get Influenced Variable
+_UI_InfluencedVariableReference_controlFlowVariable_feature = Control Flow Variable
+_UI_InfluencedVariableReference_resourceDemand_feature = Resource Demand
+_UI_InfluencedVariableReference_responseTime_feature = Response Time
+_UI_InfluencingParameter_behavior_feature = Behavior
+_UI_ShadowParameter_name_feature = Name
+_UI_ShadowParameter_description_feature = Description
+_UI_Relationship_surroundingEntity_feature = Surrounding Entity
+_UI_Relationship_characterization_feature = Characterization
+_UI_Relationship_explicitDescription_feature = Explicit Description
+_UI_DependencyRelationship_dependent_feature = Dependent
+_UI_DependencyRelationship_independent_feature = Independent
+_UI_DependencyPropagationRelationship_independent_feature = Independent
+_UI_DependencyPropagationRelationship_dependent_feature = Dependent
+_UI_DependencyPropagationRelationship_independentComponentInstanceReferences_feature = Independent Component Instance References
+_UI_DependencyPropagationRelationship_dependentComponentInstanceReference_feature = Dependent Component Instance Reference
+_UI_ComponentInstanceReference_assemblies_feature = Assemblies
+_UI_CallParameter_characterization_feature = Characterization
+_UI_CallParameter_signature_feature = Signature
+_UI_CallParameter_parameter_feature = Parameter
+_UI_CallParameter_returnType_feature = Return Type
+_UI_ServiceInputParameter_providingRole_feature = Providing Role
+_UI_ExternalCallReturnParameter_externalCall_feature = External Call
+_UI_ExternalCallParameter_externallCall_feature = Externall Call
+_UI_InterfaceProvidingEntity_interfaceProvidingRoles_feature = Interface Providing Roles
+_UI_InterfaceProvidingEntity_blackBoxBehavior_feature = Black Box Behavior
+_UI_InterfaceRequiringEntity_interfaceRequiringRoles_feature = Interface Requiring Roles
+_UI_InterfaceProvidingRequiringEntity_coarseGrainedBehavior_feature = Coarse Grained Behavior
+_UI_InterfaceProvidingRequiringEntity_relationships_feature = Relationships
+_UI_Import_importURI_feature = Import URI
+_UI_Import_repository_feature = Repository
+_UI_InterfaceRequiringRole_interfaceRequiringEntity_feature = Interface Requiring Entity
+_UI_InterfaceRequiringRole_interface_feature = Interface
+_UI_InterfaceProvidingRole_interfaceProvidingEntity_feature = Interface Providing Entity
+_UI_InterfaceProvidingRole_interface_feature = Interface
+_UI_ComposedStructure_assemblyContexts_feature = Assembly Contexts
+_UI_ComposedStructure_assemblyConnectors_feature = Assembly Connectors
+_UI_ComposedStructure_providingDelegationConnectors_feature = Providing Delegation Connectors
+_UI_ComposedStructure_requiringDelegationConnectors_feature = Requiring Delegation Connectors
+_UI_Interface_repository_feature = Repository
+_UI_Interface_parentInterfaces_feature = Parent Interfaces
+_UI_Interface_signatures_feature = Signatures
+_UI_Signature_parameters_feature = Parameters
+_UI_Signature_returnType_feature = Return Type
+_UI_Signature_interface_feature = Interface
+_UI_Parameter_modifier_feature = Modifier
+_UI_Parameter_dataType_feature = Data Type
+_UI_Repository_imports_feature = Imports
+_UI_Repository_datatypes_feature = Datatypes
+_UI_Repository_interfaces_feature = Interfaces
+_UI_Repository_components_feature = Components
+_UI_RepositoryComponent_repository_feature = Repository
+_UI_BasicComponent_semaphores_feature = Semaphores
+_UI_BasicComponent_fineGrainedBehavior_feature = Fine Grained Behavior
+_UI_Semaphore_capacity_feature = Capacity
+_UI_DataType_repository_feature = Repository
+_UI_CollectionDataType_innerType_feature = Inner Type
+_UI_CompositeDataType_innerDeclarations_feature = Inner Declarations
+_UI_CompositeDataType_parentTypes_feature = Parent Types
+_UI_InnerDeclaration_dataType_feature = Data Type
+_UI_InnerDeclaration_compositeDataType_feature = Composite Data Type
+_UI_PrimitiveDataType_type_feature = Type
+_UI_AssemblyContext_parentStructure_feature = Parent Structure
+_UI_AssemblyContext_encapsulatedComponent_feature = Encapsulated Component
+_UI_AssemblyConnector_parentStructure_feature = Parent Structure
+_UI_AssemblyConnector_interfaceRequiringRole_feature = Interface Requiring Role
+_UI_AssemblyConnector_interfaceProvidingRole_feature = Interface Providing Role
+_UI_AssemblyConnector_providingAssemblyContext_feature = Providing Assembly Context
+_UI_AssemblyConnector_requiringAssemblyContext_feature = Requiring Assembly Context
+_UI_DelegationConnector_assemblyContext_feature = Assembly Context
+_UI_ProvidingDelegationConnector_parentStructure_feature = Parent Structure
+_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature = Inner Interface Providing Role
+_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature = Outer Interface Providing Role
+_UI_RequiringDelegationConnector_parentStructure_feature = Parent Structure
+_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature = Inner Interface Requiring Role
+_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature = Outer Interface Requiring Role
+_UI_ServiceBehaviorAbstraction_describedSignature_feature = Described Signature
+_UI_ServiceBehaviorAbstraction_influencingParameter_feature = Influencing Parameter
+_UI_ServiceBehaviorAbstraction_influencedVariableReference_feature = Influenced Variable Reference
+_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature = Interface Providing Role
+_UI_FineGrainedBehavior_basicComponent_feature = Basic Component
+_UI_FineGrainedBehavior_behavior_feature = Behavior
+_UI_ComponentInternalBehavior_actions_feature = Actions
+_UI_AbstractAction_parentBehavior_feature = Parent Behavior
+_UI_AcquireAction_semaphore_feature = Semaphore
+_UI_ReleaseAction_semaphore_feature = Semaphore
+_UI_InternalAction_resourceDemand_feature = Resource Demand
+_UI_ForkAction_withSynchronizationBarrier_feature = With Synchronization Barrier
+_UI_ForkAction_forkedBehaviors_feature = Forked Behaviors
+_UI_BranchAction_branches_feature = Branches
+_UI_BranchAction_branchProbabilities_feature = Branch Probabilities
+_UI_BranchProbabilities_branchAction_feature = Branch Action
+_UI_LoopAction_loopBodyBehavior_feature = Loop Body Behavior
+_UI_LoopAction_loopIterationCount_feature = Loop Iteration Count
+_UI_LoopIterationCount_loopAction_feature = Loop Action
+_UI_ExternalCallAction_externalCall_feature = External Call
+_UI_ExternalCall_signature_feature = Signature
+_UI_ExternalCall_interfaceRequiringRole_feature = Interface Requiring Role
+_UI_ResourceDemand_internalAction_feature = Internal Action
+_UI_ResourceDemand_coarseGrainedBehavior_feature = Coarse Grained Behavior
+_UI_ResourceDemand_resourceType_feature = Resource Type
+_UI_ResourceDemand_characterization_feature = Characterization
+_UI_ResourceDemand_explicitDescription_feature = Explicit Description
+_UI_CoarseGrainedBehavior_describedEntity_feature = Described Entity
+_UI_CoarseGrainedBehavior_externalCallFrequency_feature = External Call Frequency
+_UI_CoarseGrainedBehavior_resourceDemand_feature = Resource Demand
+_UI_ExternalCallFrequency_coarseGrainedBehavior_feature = Coarse Grained Behavior
+_UI_ExternalCallFrequency_externalCall_feature = External Call
+_UI_ExternalCallFrequency_frequency_feature = Frequency
+_UI_CallFrequency_externalCallFrequency_feature = External Call Frequency
+_UI_BlackBoxBehavior_describedEntity_feature = Described Entity
+_UI_BlackBoxBehavior_responseTime_feature = Response Time
+_UI_ResponseTime_blackBoxBehavior_feature = Black Box Behavior
+_UI_ResponseTime_characterization_feature = Characterization
+_UI_ResponseTime_explicitDescription_feature = Explicit Description
+_UI_Unknown_feature = Unspecified
+
+_UI_ProductOperation_MULT_literal = MULT
+_UI_ProductOperation_DIV_literal = DIV
+_UI_ProductOperation_MOD_literal = MOD
+_UI_TermOperation_ADD_literal = ADD
+_UI_TermOperation_SUB_literal = SUB
+_UI_CompareOperation_GREATER_literal = GREATER
+_UI_CompareOperation_LESS_literal = LESS
+_UI_CompareOperation_EQUALS_literal = EQUALS
+_UI_CompareOperation_NOTEQUAL_literal = NOTEQUAL
+_UI_CompareOperation_LESSEQUAL_literal = LESSEQUAL
+_UI_CompareOperation_GREATEREQUAL_literal = GREATEREQUAL
+_UI_BooleanOperation_AND_literal = AND
+_UI_BooleanOperation_OR_literal = OR
+_UI_BooleanOperation_XOR_literal = XOR
+_UI_ModelVariableCharacterizationType_EMPIRICAL_literal = EMPIRICAL
+_UI_ModelVariableCharacterizationType_EXPLICIT_literal = EXPLICIT
+_UI_RelationshipCharacterizationType_EMPIRICAL_literal = EMPIRICAL
+_UI_RelationshipCharacterizationType_EXPLICIT_literal = EXPLICIT
+_UI_RelationshipCharacterizationType_IDENTITY_literal = IDENTITY
+_UI_ParameterCharacterizationType_VALUE_literal = VALUE
+_UI_ParameterCharacterizationType_NUMBER_OF_ELEMENTS_literal = NUMBER_OF_ELEMENTS
+_UI_ParameterModifier_NONE_literal = NONE
+_UI_ParameterModifier_IN_literal = IN
+_UI_ParameterModifier_OUT_literal = OUT
+_UI_ParameterModifier_INOUT_literal = INOUT
+_UI_PrimitiveTypeEnum_INT_literal = INT
+_UI_PrimitiveTypeEnum_STRING_literal = STRING
+_UI_PrimitiveTypeEnum_BOOL_literal = BOOL
+_UI_PrimitiveTypeEnum_DOUBLE_literal = DOUBLE
+_UI_PrimitiveTypeEnum_CHAR_literal = CHAR
+_UI_PrimitiveTypeEnum_BYTE_literal = BYTE
+_UI_PrimitiveTypeEnum_LONG_literal = LONG
+_UI_RandomVariable_specification_feature = Specification
+_UI_InfluencedVariableReference_influencedVariable_feature = Influenced Variable
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d549ac397970ad19791225f4038ba7ee0e229eb4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/plugin.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated applicationlevel -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/functions/0.1"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated applicationlevel -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/parameterdependencies/0.1"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated applicationlevel -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/repository/0.1"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated applicationlevel -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/servicebehavior/0.1"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated applicationlevel -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/system/0.1"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..654c49f532307e4cd9f0aacadb6be9a5a768a539
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e340404587760c71cb4efefbf92eaccb1a605ca1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/AtomItemProvider.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Atom} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AtomItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AtomItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Atom_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..85ba457fd882179a2b63c6144b352c8963f29df6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BinaryBooleanExpressionItemProvider.java
@@ -0,0 +1,356 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanOperation;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BinaryBooleanExpressionItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BinaryBooleanExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOperationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Operation feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOperationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BinaryBooleanExpression_operation_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_BinaryBooleanExpression_operation_feature", "_UI_BinaryBooleanExpression_type"),
+				 FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__OPERATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT);
+			childrenFeatures.add(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BinaryBooleanExpression.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BinaryBooleanExpression"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BooleanOperation labelValue = ((BinaryBooleanExpression)object).getOperation();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_BinaryBooleanExpression_type") :
+			getString("_UI_BinaryBooleanExpression_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BinaryBooleanExpression.class)) {
+			case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__OPERATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__LEFT:
+			case FunctionsPackage.BINARY_BOOLEAN_EXPRESSION__RIGHT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__LEFT ||
+			childFeature == FunctionsPackage.Literals.BINARY_BOOLEAN_EXPRESSION__RIGHT;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3470542708ebcb5eb33cd8be0851427c425a1645
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleItemProvider.java
@@ -0,0 +1,155 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoolSampleItemProvider extends SampleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoolSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addProbabilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BoolSample_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_BoolSample_value_feature", "_UI_BoolSample_type"),
+				 FunctionsPackage.Literals.BOOL_SAMPLE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Probability feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProbabilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BoolSample_probability_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_BoolSample_probability_feature", "_UI_BoolSample_type"),
+				 FunctionsPackage.Literals.BOOL_SAMPLE__PROBABILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns BoolSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BoolSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BoolSample boolSample = (BoolSample)object;
+		return getString("_UI_BoolSample_type") + " " + boolSample.isValue();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BoolSample.class)) {
+			case FunctionsPackage.BOOL_SAMPLE__VALUE:
+			case FunctionsPackage.BOOL_SAMPLE__PROBABILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff08b6a86e8e1be71214bbb183d1eacfa5940934
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoolSampleListItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoolSampleListItemProvider extends SampleListItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoolSampleListItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.BOOL_SAMPLE_LIST__ITEMS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BoolSampleList.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BoolSampleList"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BoolSampleList_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BoolSampleList.class)) {
+			case FunctionsPackage.BOOL_SAMPLE_LIST__ITEMS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BOOL_SAMPLE_LIST__ITEMS,
+				 FunctionsFactory.eINSTANCE.createBoolSample()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb13feb46efe31b5740270cbcabcac63ab10f29b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BooleanLiteralItemProvider.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanLiteralItemProvider extends LiteralItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BooleanLiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_BooleanLiteral_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_BooleanLiteral_value_feature", "_UI_BooleanLiteral_type"),
+				 FunctionsPackage.Literals.BOOLEAN_LITERAL__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns BooleanLiteral.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanLiteral"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BooleanLiteral booleanLiteral = (BooleanLiteral)object;
+		return getString("_UI_BooleanLiteral_type") + " " + booleanLiteral.isValue();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BooleanLiteral.class)) {
+			case FunctionsPackage.BOOLEAN_LITERAL__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..655fc4c15db993213de085b7feffa663553cef4f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/BoxedPDFItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoxedPDFItemProvider extends ProbabilityDensityFunctionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoxedPDFItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.BOXED_PDF__SAMPLE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BoxedPDF.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BoxedPDF"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BoxedPDF_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BoxedPDF.class)) {
+			case FunctionsPackage.BOXED_PDF__SAMPLE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.BOXED_PDF__SAMPLE,
+				 FunctionsFactory.eINSTANCE.createContinuousSample()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e9b3c00857b76517c033e181b6cd3d7e32737ad
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ComparisonItemProvider.java
@@ -0,0 +1,345 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.CompareOperation;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComparisonItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComparisonItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOperationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Operation feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOperationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Comparison_operation_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Comparison_operation_feature", "_UI_Comparison_type"),
+				 FunctionsPackage.Literals.COMPARISON__OPERATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.COMPARISON__LEFT);
+			childrenFeatures.add(FunctionsPackage.Literals.COMPARISON__RIGHT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		CompareOperation labelValue = ((Comparison)object).getOperation();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Comparison_type") :
+			getString("_UI_Comparison_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Comparison.class)) {
+			case FunctionsPackage.COMPARISON__OPERATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case FunctionsPackage.COMPARISON__LEFT:
+			case FunctionsPackage.COMPARISON__RIGHT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__LEFT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.COMPARISON__RIGHT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.COMPARISON__LEFT ||
+			childFeature == FunctionsPackage.Literals.COMPARISON__RIGHT;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0bbbc879b2ab4e634607d6c51476f52263646319
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousPDFItemProvider.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousPDF} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContinuousPDFItemProvider extends ProbabilityDensityFunctionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ContinuousPDFItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ContinuousPDF.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ContinuousPDF"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ContinuousPDF_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..74d76851bc2df39b28097977ba13e62cfc213878
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ContinuousSampleItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContinuousSampleItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ContinuousSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addProbabilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ContinuousSample_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ContinuousSample_value_feature", "_UI_ContinuousSample_type"),
+				 FunctionsPackage.Literals.CONTINUOUS_SAMPLE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Probability feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProbabilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ContinuousSample_probability_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ContinuousSample_probability_feature", "_UI_ContinuousSample_type"),
+				 FunctionsPackage.Literals.CONTINUOUS_SAMPLE__PROBABILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ContinuousSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ContinuousSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigDecimal labelValue = ((ContinuousSample)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ContinuousSample_type") :
+			getString("_UI_ContinuousSample_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ContinuousSample.class)) {
+			case FunctionsPackage.CONTINUOUS_SAMPLE__VALUE:
+			case FunctionsPackage.CONTINUOUS_SAMPLE__PROBABILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e38034eec63d9b39241d1b03e615d51659774ae
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleLiteralItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleLiteralItemProvider extends LiteralItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleLiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DoubleLiteral_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DoubleLiteral_value_feature", "_UI_DoubleLiteral_type"),
+				 FunctionsPackage.Literals.DOUBLE_LITERAL__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DoubleLiteral.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleLiteral"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigDecimal labelValue = ((DoubleLiteral)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DoubleLiteral_type") :
+			getString("_UI_DoubleLiteral_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DoubleLiteral.class)) {
+			case FunctionsPackage.DOUBLE_LITERAL__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..490c8854d22d05bdcbe755df58c68add2e2a1a99
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleItemProvider.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleSampleItemProvider extends SampleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addProbabilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DoubleSample_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DoubleSample_value_feature", "_UI_DoubleSample_type"),
+				 FunctionsPackage.Literals.DOUBLE_SAMPLE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Probability feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProbabilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DoubleSample_probability_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DoubleSample_probability_feature", "_UI_DoubleSample_type"),
+				 FunctionsPackage.Literals.DOUBLE_SAMPLE__PROBABILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DoubleSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigDecimal labelValue = ((DoubleSample)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DoubleSample_type") :
+			getString("_UI_DoubleSample_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DoubleSample.class)) {
+			case FunctionsPackage.DOUBLE_SAMPLE__VALUE:
+			case FunctionsPackage.DOUBLE_SAMPLE__PROBABILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c5333af4042d85e5c984b79ce5854baa5dcc39e5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/DoubleSampleListItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleSampleListItemProvider extends SampleListItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DoubleSampleListItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.DOUBLE_SAMPLE_LIST__ITEMS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns DoubleSampleList.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DoubleSampleList"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_DoubleSampleList_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DoubleSampleList.class)) {
+			case FunctionsPackage.DOUBLE_SAMPLE_LIST__ITEMS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.DOUBLE_SAMPLE_LIST__ITEMS,
+				 FunctionsFactory.eINSTANCE.createDoubleSample()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a72511257312c5a1dce3be31eac95cb89ac8eafe
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleItemProvider.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnumSampleItemProvider extends SampleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnumSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addProbabilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EnumSample_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EnumSample_value_feature", "_UI_EnumSample_type"),
+				 FunctionsPackage.Literals.ENUM_SAMPLE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Probability feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProbabilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_EnumSample_probability_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_EnumSample_probability_feature", "_UI_EnumSample_type"),
+				 FunctionsPackage.Literals.ENUM_SAMPLE__PROBABILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns EnumSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnumSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EnumSample)object).getValue();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EnumSample_type") :
+			getString("_UI_EnumSample_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EnumSample.class)) {
+			case FunctionsPackage.ENUM_SAMPLE__VALUE:
+			case FunctionsPackage.ENUM_SAMPLE__PROBABILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..aba11052b06c1ffec86798138e573dfad147a7d7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/EnumSampleListItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnumSampleListItemProvider extends SampleListItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnumSampleListItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.ENUM_SAMPLE_LIST__ITEMS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns EnumSampleList.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnumSampleList"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_EnumSampleList_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EnumSampleList.class)) {
+			case FunctionsPackage.ENUM_SAMPLE_LIST__ITEMS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.ENUM_SAMPLE_LIST__ITEMS,
+				 FunctionsFactory.eINSTANCE.createEnumSample()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f61bedc7574571de7f330f947324c657b13a48bb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExplicitDescriptionItemProvider.java
@@ -0,0 +1,248 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExplicitDescriptionItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExplicitDescriptionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ExplicitDescription.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExplicitDescription"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ExplicitDescription_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExplicitDescription.class)) {
+			case FunctionsPackage.EXPLICIT_DESCRIPTION__EXPRESSION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.EXPLICIT_DESCRIPTION__EXPRESSION,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3689b9896f4513104322e5cda96c33e3b9dc75e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExponentialDistributionItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExponentialDistributionItemProvider extends ContinuousPDFItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExponentialDistributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Rate feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExponentialDistribution_rate_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExponentialDistribution_rate_feature", "_UI_ExponentialDistribution_type"),
+				 FunctionsPackage.Literals.EXPONENTIAL_DISTRIBUTION__RATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ExponentialDistribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExponentialDistribution"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigDecimal labelValue = ((ExponentialDistribution)object).getRate();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ExponentialDistribution_type") :
+			getString("_UI_ExponentialDistribution_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExponentialDistribution.class)) {
+			case FunctionsPackage.EXPONENTIAL_DISTRIBUTION__RATE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..30a30a2a3803ca78cdbbca6dcd22595417581262
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ExpressionItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Expression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExpressionItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Expression_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..39374b701cd8a4808130cef4d644f5216f1e6595
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FormalParameterItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FormalParameterItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FormalParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_FormalParameter_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_FormalParameter_value_feature", "_UI_FormalParameter_type"),
+				 FunctionsPackage.Literals.FORMAL_PARAMETER__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns FormalParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FormalParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FormalParameter)object).getValue();
+		return label == null || label.length() == 0 ?
+			getString("_UI_FormalParameter_type") :
+			getString("_UI_FormalParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FormalParameter.class)) {
+			case FunctionsPackage.FORMAL_PARAMETER__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3702f142f129bc5f8ec15d5688b2b2ebbbb4b2c5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionItemProvider.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.Function;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionItemProvider extends AtomItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Function_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Function_name_feature", "_UI_Function_type"),
+				 FunctionsPackage.Literals.FUNCTION__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.FUNCTION__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Function.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Function"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Function)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Function_type") :
+			getString("_UI_Function_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Function.class)) {
+			case FunctionsPackage.FUNCTION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case FunctionsPackage.FUNCTION__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.FUNCTION__PARAMETERS,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..e462c1998fcf676208f64417393adc02698ef617
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/FunctionsItemProviderAdapterFactory.java
@@ -0,0 +1,824 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.util.FunctionsAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionsItemProviderAdapterFactory extends FunctionsAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionsItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExplicitDescriptionItemProvider explicitDescriptionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExplicitDescription}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExplicitDescriptionAdapter() {
+		if (explicitDescriptionItemProvider == null) {
+			explicitDescriptionItemProvider = new ExplicitDescriptionItemProvider(this);
+		}
+
+		return explicitDescriptionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionItemProvider functionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Function}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFunctionAdapter() {
+		if (functionItemProvider == null) {
+			functionItemProvider = new FunctionItemProvider(this);
+		}
+
+		return functionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FormalParameterItemProvider formalParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.FormalParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFormalParameterAdapter() {
+		if (formalParameterItemProvider == null) {
+			formalParameterItemProvider = new FormalParameterItemProvider(this);
+		}
+
+		return formalParameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IfElseExpressionItemProvider ifElseExpressionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIfElseExpressionAdapter() {
+		if (ifElseExpressionItemProvider == null) {
+			ifElseExpressionItemProvider = new IfElseExpressionItemProvider(this);
+		}
+
+		return ifElseExpressionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BinaryBooleanExpressionItemProvider binaryBooleanExpressionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BinaryBooleanExpression}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBinaryBooleanExpressionAdapter() {
+		if (binaryBooleanExpressionItemProvider == null) {
+			binaryBooleanExpressionItemProvider = new BinaryBooleanExpressionItemProvider(this);
+		}
+
+		return binaryBooleanExpressionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UnaryBooleanExpressionItemProvider unaryBooleanExpressionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createUnaryBooleanExpressionAdapter() {
+		if (unaryBooleanExpressionItemProvider == null) {
+			unaryBooleanExpressionItemProvider = new UnaryBooleanExpressionItemProvider(this);
+		}
+
+		return unaryBooleanExpressionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComparisonItemProvider comparisonItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Comparison}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createComparisonAdapter() {
+		if (comparisonItemProvider == null) {
+			comparisonItemProvider = new ComparisonItemProvider(this);
+		}
+
+		return comparisonItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TermItemProvider termItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTermAdapter() {
+		if (termItemProvider == null) {
+			termItemProvider = new TermItemProvider(this);
+		}
+
+		return termItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProductItemProvider productItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createProductAdapter() {
+		if (productItemProvider == null) {
+			productItemProvider = new ProductItemProvider(this);
+		}
+
+		return productItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PowerItemProvider powerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPowerAdapter() {
+		if (powerItemProvider == null) {
+			powerItemProvider = new PowerItemProvider(this);
+		}
+
+		return powerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RandomVariableItemProvider randomVariableItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createRandomVariableAdapter() {
+		if (randomVariableItemProvider == null) {
+			randomVariableItemProvider = new RandomVariableItemProvider(this);
+		}
+
+		return randomVariableItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BooleanLiteralItemProvider booleanLiteralItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BooleanLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBooleanLiteralAdapter() {
+		if (booleanLiteralItemProvider == null) {
+			booleanLiteralItemProvider = new BooleanLiteralItemProvider(this);
+		}
+
+		return booleanLiteralItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntLiteralItemProvider intLiteralItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntLiteralAdapter() {
+		if (intLiteralItemProvider == null) {
+			intLiteralItemProvider = new IntLiteralItemProvider(this);
+		}
+
+		return intLiteralItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleLiteralItemProvider doubleLiteralItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDoubleLiteralAdapter() {
+		if (doubleLiteralItemProvider == null) {
+			doubleLiteralItemProvider = new DoubleLiteralItemProvider(this);
+		}
+
+		return doubleLiteralItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProbabilityMassFunctionItemProvider probabilityMassFunctionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createProbabilityMassFunctionAdapter() {
+		if (probabilityMassFunctionItemProvider == null) {
+			probabilityMassFunctionItemProvider = new ProbabilityMassFunctionItemProvider(this);
+		}
+
+		return probabilityMassFunctionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleSampleItemProvider doubleSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDoubleSampleAdapter() {
+		if (doubleSampleItemProvider == null) {
+			doubleSampleItemProvider = new DoubleSampleItemProvider(this);
+		}
+
+		return doubleSampleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntSampleItemProvider intSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntSampleAdapter() {
+		if (intSampleItemProvider == null) {
+			intSampleItemProvider = new IntSampleItemProvider(this);
+		}
+
+		return intSampleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoolSampleItemProvider boolSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBoolSampleAdapter() {
+		if (boolSampleItemProvider == null) {
+			boolSampleItemProvider = new BoolSampleItemProvider(this);
+		}
+
+		return boolSampleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnumSampleItemProvider enumSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnumSampleAdapter() {
+		if (enumSampleItemProvider == null) {
+			enumSampleItemProvider = new EnumSampleItemProvider(this);
+		}
+
+		return enumSampleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IntSampleListItemProvider intSampleListItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntSampleListAdapter() {
+		if (intSampleListItemProvider == null) {
+			intSampleListItemProvider = new IntSampleListItemProvider(this);
+		}
+
+		return intSampleListItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DoubleSampleListItemProvider doubleSampleListItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.DoubleSampleList}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDoubleSampleListAdapter() {
+		if (doubleSampleListItemProvider == null) {
+			doubleSampleListItemProvider = new DoubleSampleListItemProvider(this);
+		}
+
+		return doubleSampleListItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoolSampleListItemProvider boolSampleListItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoolSampleList}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBoolSampleListAdapter() {
+		if (boolSampleListItemProvider == null) {
+			boolSampleListItemProvider = new BoolSampleListItemProvider(this);
+		}
+
+		return boolSampleListItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnumSampleListItemProvider enumSampleListItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.EnumSampleList}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnumSampleListAdapter() {
+		if (enumSampleListItemProvider == null) {
+			enumSampleListItemProvider = new EnumSampleListItemProvider(this);
+		}
+
+		return enumSampleListItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoxedPDFItemProvider boxedPDFItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.BoxedPDF}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBoxedPDFAdapter() {
+		if (boxedPDFItemProvider == null) {
+			boxedPDFItemProvider = new BoxedPDFItemProvider(this);
+		}
+
+		return boxedPDFItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ContinuousSampleItemProvider continuousSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ContinuousSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createContinuousSampleAdapter() {
+		if (continuousSampleItemProvider == null) {
+			continuousSampleItemProvider = new ContinuousSampleItemProvider(this);
+		}
+
+		return continuousSampleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NormalDistributionItemProvider normalDistributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createNormalDistributionAdapter() {
+		if (normalDistributionItemProvider == null) {
+			normalDistributionItemProvider = new NormalDistributionItemProvider(this);
+		}
+
+		return normalDistributionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExponentialDistributionItemProvider exponentialDistributionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ExponentialDistribution}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExponentialDistributionAdapter() {
+		if (exponentialDistributionItemProvider == null) {
+			exponentialDistributionItemProvider = new ExponentialDistributionItemProvider(this);
+		}
+
+		return exponentialDistributionItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (explicitDescriptionItemProvider != null) explicitDescriptionItemProvider.dispose();
+		if (functionItemProvider != null) functionItemProvider.dispose();
+		if (formalParameterItemProvider != null) formalParameterItemProvider.dispose();
+		if (ifElseExpressionItemProvider != null) ifElseExpressionItemProvider.dispose();
+		if (binaryBooleanExpressionItemProvider != null) binaryBooleanExpressionItemProvider.dispose();
+		if (unaryBooleanExpressionItemProvider != null) unaryBooleanExpressionItemProvider.dispose();
+		if (comparisonItemProvider != null) comparisonItemProvider.dispose();
+		if (termItemProvider != null) termItemProvider.dispose();
+		if (productItemProvider != null) productItemProvider.dispose();
+		if (powerItemProvider != null) powerItemProvider.dispose();
+		if (randomVariableItemProvider != null) randomVariableItemProvider.dispose();
+		if (booleanLiteralItemProvider != null) booleanLiteralItemProvider.dispose();
+		if (intLiteralItemProvider != null) intLiteralItemProvider.dispose();
+		if (doubleLiteralItemProvider != null) doubleLiteralItemProvider.dispose();
+		if (probabilityMassFunctionItemProvider != null) probabilityMassFunctionItemProvider.dispose();
+		if (doubleSampleItemProvider != null) doubleSampleItemProvider.dispose();
+		if (intSampleItemProvider != null) intSampleItemProvider.dispose();
+		if (boolSampleItemProvider != null) boolSampleItemProvider.dispose();
+		if (enumSampleItemProvider != null) enumSampleItemProvider.dispose();
+		if (intSampleListItemProvider != null) intSampleListItemProvider.dispose();
+		if (doubleSampleListItemProvider != null) doubleSampleListItemProvider.dispose();
+		if (boolSampleListItemProvider != null) boolSampleListItemProvider.dispose();
+		if (enumSampleListItemProvider != null) enumSampleListItemProvider.dispose();
+		if (boxedPDFItemProvider != null) boxedPDFItemProvider.dispose();
+		if (continuousSampleItemProvider != null) continuousSampleItemProvider.dispose();
+		if (normalDistributionItemProvider != null) normalDistributionItemProvider.dispose();
+		if (exponentialDistributionItemProvider != null) exponentialDistributionItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..596dfcaac348c02b0fd872577b8edc0f9e99f127
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IfElseExpressionItemProvider.java
@@ -0,0 +1,406 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IfElseExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IfElseExpressionItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IfElseExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION);
+			childrenFeatures.add(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP);
+			childrenFeatures.add(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns IfElseExpression.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IfElseExpression"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_IfElseExpression_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IfElseExpression.class)) {
+			case FunctionsPackage.IF_ELSE_EXPRESSION__CONDITION:
+			case FunctionsPackage.IF_ELSE_EXPRESSION__TRUE_EXP:
+			case FunctionsPackage.IF_ELSE_EXPRESSION__FALSE_EXP:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__CONDITION ||
+			childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__TRUE_EXP ||
+			childFeature == FunctionsPackage.Literals.IF_ELSE_EXPRESSION__FALSE_EXP;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3bfffa94c240a32bb93c6fa2944facb7ba31cb19
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntLiteralItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral;
+
+import java.math.BigInteger;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntLiteralItemProvider extends LiteralItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntLiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IntLiteral_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IntLiteral_value_feature", "_UI_IntLiteral_type"),
+				 FunctionsPackage.Literals.INT_LITERAL__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns IntLiteral.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntLiteral"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigInteger labelValue = ((IntLiteral)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IntLiteral_type") :
+			getString("_UI_IntLiteral_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IntLiteral.class)) {
+			case FunctionsPackage.INT_LITERAL__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9060c7f42bc8da11efcdc7579e9b796460315032
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleItemProvider.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample;
+
+import java.math.BigInteger;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntSampleItemProvider extends SampleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+			addProbabilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IntSample_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IntSample_value_feature", "_UI_IntSample_type"),
+				 FunctionsPackage.Literals.INT_SAMPLE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Probability feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProbabilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_IntSample_probability_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_IntSample_probability_feature", "_UI_IntSample_type"),
+				 FunctionsPackage.Literals.INT_SAMPLE__PROBABILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns IntSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigInteger labelValue = ((IntSample)object).getValue();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IntSample_type") :
+			getString("_UI_IntSample_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IntSample.class)) {
+			case FunctionsPackage.INT_SAMPLE__VALUE:
+			case FunctionsPackage.INT_SAMPLE__PROBABILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e05b6d2914252b2221fdfdfe5d24221bc04a845d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/IntSampleListItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.IntSampleList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntSampleListItemProvider extends SampleListItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IntSampleListItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.INT_SAMPLE_LIST__ITEMS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns IntSampleList.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntSampleList"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_IntSampleList_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IntSampleList.class)) {
+			case FunctionsPackage.INT_SAMPLE_LIST__ITEMS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.INT_SAMPLE_LIST__ITEMS,
+				 FunctionsFactory.eINSTANCE.createIntSample()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3863dbee6956479dd40e314f1ec4df6d91b2c308
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/LiteralItemProvider.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Literal} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LiteralItemProvider extends ProbabilityFunctionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Literal.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Literal"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Literal_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e01b92820bc90970286e786cbf884ab411d6d602
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/NormalDistributionItemProvider.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution;
+
+import java.math.BigDecimal;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.NormalDistribution} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NormalDistributionItemProvider extends ContinuousPDFItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NormalDistributionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMuPropertyDescriptor(object);
+			addSigmaPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Mu feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMuPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NormalDistribution_mu_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NormalDistribution_mu_feature", "_UI_NormalDistribution_type"),
+				 FunctionsPackage.Literals.NORMAL_DISTRIBUTION__MU,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Sigma feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSigmaPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NormalDistribution_sigma_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NormalDistribution_sigma_feature", "_UI_NormalDistribution_type"),
+				 FunctionsPackage.Literals.NORMAL_DISTRIBUTION__SIGMA,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns NormalDistribution.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NormalDistribution"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigDecimal labelValue = ((NormalDistribution)object).getMu();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_NormalDistribution_type") :
+			getString("_UI_NormalDistribution_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(NormalDistribution.class)) {
+			case FunctionsPackage.NORMAL_DISTRIBUTION__MU:
+			case FunctionsPackage.NORMAL_DISTRIBUTION__SIGMA:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..70a093b57cfdc3d3ba14c77449042fe45179e328
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/PowerItemProvider.java
@@ -0,0 +1,312 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.Power;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Power} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PowerItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PowerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.POWER__BASE);
+			childrenFeatures.add(FunctionsPackage.Literals.POWER__EXPONENT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Power_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Power.class)) {
+			case FunctionsPackage.POWER__BASE:
+			case FunctionsPackage.POWER__EXPONENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__BASE,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.POWER__EXPONENT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.POWER__BASE ||
+			childFeature == FunctionsPackage.Literals.POWER__EXPONENT;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..839ce19135202258e19cc333f065fb89453bd5da
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityDensityFunctionItemProvider.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityDensityFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProbabilityDensityFunctionItemProvider extends ProbabilityFunctionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProbabilityDensityFunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ProbabilityDensityFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ProbabilityDensityFunction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ProbabilityDensityFunction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..08112f2a83fa982fbe3c75b58318a7c600049170
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityFunctionItemProvider.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProbabilityFunctionItemProvider extends AtomItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProbabilityFunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ProbabilityFunction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8545b02f65d42f3c605efaf9d7fb454944fee62c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProbabilityMassFunctionItemProvider.java
@@ -0,0 +1,158 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.ProbabilityMassFunction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProbabilityMassFunctionItemProvider extends ProbabilityFunctionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProbabilityMassFunctionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ProbabilityMassFunction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ProbabilityMassFunction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ProbabilityMassFunction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ProbabilityMassFunction.class)) {
+			case FunctionsPackage.PROBABILITY_MASS_FUNCTION__SAMPLES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES,
+				 FunctionsFactory.eINSTANCE.createIntSampleList()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES,
+				 FunctionsFactory.eINSTANCE.createDoubleSampleList()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES,
+				 FunctionsFactory.eINSTANCE.createBoolSampleList()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PROBABILITY_MASS_FUNCTION__SAMPLES,
+				 FunctionsFactory.eINSTANCE.createEnumSampleList()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6abb1e5652d587ec791cc157eea23f8ecfbe70da
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/ProductItemProvider.java
@@ -0,0 +1,345 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.Product;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.ProductOperation;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Product} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProductItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProductItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOperationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Operation feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOperationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Product_operation_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Product_operation_feature", "_UI_Product_type"),
+				 FunctionsPackage.Literals.PRODUCT__OPERATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.PRODUCT__LEFT);
+			childrenFeatures.add(FunctionsPackage.Literals.PRODUCT__RIGHT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ProductOperation labelValue = ((Product)object).getOperation();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Product_type") :
+			getString("_UI_Product_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Product.class)) {
+			case FunctionsPackage.PRODUCT__OPERATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case FunctionsPackage.PRODUCT__LEFT:
+			case FunctionsPackage.PRODUCT__RIGHT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__LEFT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.PRODUCT__RIGHT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.PRODUCT__LEFT ||
+			childFeature == FunctionsPackage.Literals.PRODUCT__RIGHT;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd0c75e4ac9142af1d1af17bf1075d3e9e990187
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/RandomVariableItemProvider.java
@@ -0,0 +1,203 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.RandomVariable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RandomVariableItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RandomVariableItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns RandomVariable.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RandomVariable"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_RandomVariable_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(RandomVariable.class)) {
+			case FunctionsPackage.RANDOM_VARIABLE__PROB_FUNCTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.RANDOM_VARIABLE__PROB_FUNCTION,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0419c7cc76b69ca16c5ff0b5ae7b1a8f0a21772
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleItemProvider.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Sample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SampleItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Sample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Sample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Sample_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a2289ad87fe04c20a57853494018bc866c7a24f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/SampleListItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.SampleList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SampleListItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SampleListItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_SampleList_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..38c1db0e2af552edf4615644df57dd5ac9d0edad
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/TermItemProvider.java
@@ -0,0 +1,345 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.Term;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.TermOperation;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.Term} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TermItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TermItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOperationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Operation feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOperationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Term_operation_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Term_operation_feature", "_UI_Term_type"),
+				 FunctionsPackage.Literals.TERM__OPERATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.TERM__LEFT);
+			childrenFeatures.add(FunctionsPackage.Literals.TERM__RIGHT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		TermOperation labelValue = ((Term)object).getOperation();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Term_type") :
+			getString("_UI_Term_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Term.class)) {
+			case FunctionsPackage.TERM__OPERATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case FunctionsPackage.TERM__LEFT:
+			case FunctionsPackage.TERM__RIGHT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__LEFT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.TERM__RIGHT,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == FunctionsPackage.Literals.TERM__LEFT ||
+			childFeature == FunctionsPackage.Literals.TERM__RIGHT;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ee5f30d0c16982fa6921cd617cee54511eab093
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/provider/UnaryBooleanExpressionItemProvider.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.functions.UnaryBooleanExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnaryBooleanExpressionItemProvider extends ExpressionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UnaryBooleanExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns UnaryBooleanExpression.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/UnaryBooleanExpression"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_UnaryBooleanExpression_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(UnaryBooleanExpression.class)) {
+			case FunctionsPackage.UNARY_BOOLEAN_EXPRESSION__INNER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createIfElseExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createBinaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createUnaryBooleanExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createComparison()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createTerm()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createProduct()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createPower()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createIntLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createDoubleLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createProbabilityMassFunction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createBoxedPDF()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createNormalDistribution()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(FunctionsPackage.Literals.UNARY_BOOLEAN_EXPRESSION__INNER,
+				 FunctionsFactory.eINSTANCE.createExponentialDistribution()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ff1d747ed3fb4f7c6ffe855b848f32f2dc3afac
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/CallParameterItemProvider.java
@@ -0,0 +1,193 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.CallParameter;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.CallParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CallParameterItemProvider extends InfluencingParameterItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CallParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCharacterizationPropertyDescriptor(object);
+			addSignaturePropertyDescriptor(object);
+			addParameterPropertyDescriptor(object);
+			addReturnTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Characterization feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCharacterizationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameter_characterization_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_characterization_feature", "_UI_CallParameter_type"),
+				 ParameterdependenciesPackage.Literals.CALL_PARAMETER__CHARACTERIZATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Signature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSignaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameter_signature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_signature_feature", "_UI_CallParameter_type"),
+				 ParameterdependenciesPackage.Literals.CALL_PARAMETER__SIGNATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Parameter feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParameterPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameter_parameter_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_parameter_feature", "_UI_CallParameter_type"),
+				 ParameterdependenciesPackage.Literals.CALL_PARAMETER__PARAMETER,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Return Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReturnTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameter_returnType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameter_returnType_feature", "_UI_CallParameter_type"),
+				 ParameterdependenciesPackage.Literals.CALL_PARAMETER__RETURN_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ParameterCharacterizationType labelValue = ((CallParameter)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CallParameter_type") :
+			getString("_UI_CallParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CallParameter.class)) {
+			case ParameterdependenciesPackage.CALL_PARAMETER__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c59bb35b732f7c08dbc4c627f3a0c8821a4ef9b9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ComponentInstanceReferenceItemProvider.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComponentInstanceReferenceItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComponentInstanceReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAssembliesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Assemblies feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAssembliesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ComponentInstanceReference_assemblies_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ComponentInstanceReference_assemblies_feature", "_UI_ComponentInstanceReference_type"),
+				 ParameterdependenciesPackage.Literals.COMPONENT_INSTANCE_REFERENCE__ASSEMBLIES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ComponentInstanceReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ComponentInstanceReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ComponentInstanceReference_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ee315271e2d1979f1fe9e7ef0c471654e710104a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ControlFlowVariableItemProvider.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ControlFlowVariable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ControlFlowVariableItemProvider extends ModelVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ControlFlowVariableItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCharacterizationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Characterization feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCharacterizationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ControlFlowVariable_characterization_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ControlFlowVariable_characterization_feature", "_UI_ControlFlowVariable_type"),
+				 ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__CHARACTERIZATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((ControlFlowVariable)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ControlFlowVariable_type") :
+			getString("_UI_ControlFlowVariable_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ControlFlowVariable.class)) {
+			case ParameterdependenciesPackage.CONTROL_FLOW_VARIABLE__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ParameterdependenciesPackage.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.CONTROL_FLOW_VARIABLE__EXPLICIT_DESCRIPTION,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7649f0c6d5cde4f39e9355d38a4cf2a4f6124167
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyPropagationRelationshipItemProvider.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DependencyPropagationRelationshipItemProvider extends RelationshipItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DependencyPropagationRelationshipItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIndependentPropertyDescriptor(object);
+			addDependentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Independent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIndependentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DependencyPropagationRelationship_independent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DependencyPropagationRelationship_independent_feature", "_UI_DependencyPropagationRelationship_type"),
+				 ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dependent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDependentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DependencyPropagationRelationship_dependent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DependencyPropagationRelationship_dependent_feature", "_UI_DependencyPropagationRelationship_type"),
+				 ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns DependencyPropagationRelationship.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DependencyPropagationRelationship"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		RelationshipCharacterizationType labelValue = ((DependencyPropagationRelationship)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DependencyPropagationRelationship_type") :
+			getString("_UI_DependencyPropagationRelationship_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DependencyPropagationRelationship.class)) {
+			case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES:
+			case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+			case ParameterdependenciesPackage.DEPENDENCY_PROPAGATION_RELATIONSHIP__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES,
+				 ParameterdependenciesFactory.eINSTANCE.createComponentInstanceReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE,
+				 ParameterdependenciesFactory.eINSTANCE.createComponentInstanceReference()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__INDEPENDENT_COMPONENT_INSTANCE_REFERENCES ||
+			childFeature == ParameterdependenciesPackage.Literals.DEPENDENCY_PROPAGATION_RELATIONSHIP__DEPENDENT_COMPONENT_INSTANCE_REFERENCE;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..63ce8e8df5a05e20fe109b04a043b877e34554ee
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/DependencyRelationshipItemProvider.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DependencyRelationshipItemProvider extends RelationshipItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DependencyRelationshipItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDependentPropertyDescriptor(object);
+			addIndependentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Dependent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDependentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DependencyRelationship_dependent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DependencyRelationship_dependent_feature", "_UI_DependencyRelationship_type"),
+				 ParameterdependenciesPackage.Literals.DEPENDENCY_RELATIONSHIP__DEPENDENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Independent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIndependentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DependencyRelationship_independent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DependencyRelationship_independent_feature", "_UI_DependencyRelationship_type"),
+				 ParameterdependenciesPackage.Literals.DEPENDENCY_RELATIONSHIP__INDEPENDENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DependencyRelationship.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DependencyRelationship"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		RelationshipCharacterizationType labelValue = ((DependencyRelationship)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DependencyRelationship_type") :
+			getString("_UI_DependencyRelationship_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DependencyRelationship.class)) {
+			case ParameterdependenciesPackage.DEPENDENCY_RELATIONSHIP__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..67c2e1189a7132030e38dc459e2aba41caf60125
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallParameterItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalCallParameterItemProvider extends CallParameterItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExternalCallParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addExternallCallPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Externall Call feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExternallCallPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExternalCallParameter_externallCall_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExternalCallParameter_externallCall_feature", "_UI_ExternalCallParameter_type"),
+				 ParameterdependenciesPackage.Literals.EXTERNAL_CALL_PARAMETER__EXTERNALL_CALL,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ExternalCallParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ParameterCharacterizationType labelValue = ((ExternalCallParameter)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ExternalCallParameter_type") :
+			getString("_UI_ExternalCallParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f5f3f6645183d766ede1c9815f5de8833e0d2fb4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ExternalCallReturnParameterItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalCallReturnParameterItemProvider extends CallParameterItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExternalCallReturnParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addExternalCallPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the External Call feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExternalCallPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExternalCallReturnParameter_externalCall_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExternalCallReturnParameter_externalCall_feature", "_UI_ExternalCallReturnParameter_type"),
+				 ParameterdependenciesPackage.Literals.EXTERNAL_CALL_RETURN_PARAMETER__EXTERNAL_CALL,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ExternalCallReturnParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallReturnParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ParameterCharacterizationType labelValue = ((ExternalCallReturnParameter)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ExternalCallReturnParameter_type") :
+			getString("_UI_ExternalCallReturnParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..be283d88fff55f7c260f97f2817422cca37cb0fc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencedVariableReferenceItemProvider.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InfluencedVariableReferenceItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InfluencedVariableReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInfluencedVariablePropertyDescriptor(object);
+			addControlFlowVariablePropertyDescriptor(object);
+			addResourceDemandPropertyDescriptor(object);
+			addResponseTimePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Influenced Variable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInfluencedVariablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InfluencedVariableReference_influencedVariable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_influencedVariable_feature", "_UI_InfluencedVariableReference_type"),
+				 ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__INFLUENCED_VARIABLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Control Flow Variable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addControlFlowVariablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InfluencedVariableReference_controlFlowVariable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_controlFlowVariable_feature", "_UI_InfluencedVariableReference_type"),
+				 ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__CONTROL_FLOW_VARIABLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Resource Demand feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addResourceDemandPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InfluencedVariableReference_resourceDemand_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_resourceDemand_feature", "_UI_InfluencedVariableReference_type"),
+				 ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__RESOURCE_DEMAND,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Response Time feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addResponseTimePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InfluencedVariableReference_responseTime_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InfluencedVariableReference_responseTime_feature", "_UI_InfluencedVariableReference_type"),
+				 ParameterdependenciesPackage.Literals.INFLUENCED_VARIABLE_REFERENCE__RESPONSE_TIME,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InfluencedVariableReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InfluencedVariableReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_InfluencedVariableReference_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e9ba7a07dbee6b103480ac9b4a4ecf25e9cc73b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/InfluencingParameterItemProvider.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencingParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InfluencingParameterItemProvider extends ModelVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InfluencingParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addBehaviorPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Behavior feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBehaviorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InfluencingParameter_behavior_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InfluencingParameter_behavior_feature", "_UI_InfluencingParameter_type"),
+				 ParameterdependenciesPackage.Literals.INFLUENCING_PARAMETER__BEHAVIOR,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InfluencingParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InfluencingParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_InfluencingParameter_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0803e4c252b79d340eb40947068a6ed815fa9f0c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ModelVariableItemProvider.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelVariableItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModelVariableItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.MODEL_VARIABLE__SCOPE_SET);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ModelVariable_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ModelVariable.class)) {
+			case ParameterdependenciesPackage.MODEL_VARIABLE__SCOPE_SET:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.MODEL_VARIABLE__SCOPE_SET,
+				 ParameterdependenciesFactory.eINSTANCE.createScopeSet()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7774bd85e1693e36ee8ee0ecd16f591c43854e7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ParameterdependenciesItemProviderAdapterFactory.java
@@ -0,0 +1,416 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.util.ParameterdependenciesAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterdependenciesItemProviderAdapterFactory extends ParameterdependenciesAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterdependenciesItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ScopeSetItemProvider scopeSetItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createScopeSetAdapter() {
+		if (scopeSetItemProvider == null) {
+			scopeSetItemProvider = new ScopeSetItemProvider(this);
+		}
+
+		return scopeSetItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ScopeItemProvider scopeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createScopeAdapter() {
+		if (scopeItemProvider == null) {
+			scopeItemProvider = new ScopeItemProvider(this);
+		}
+
+		return scopeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InfluencedVariableReferenceItemProvider influencedVariableReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.InfluencedVariableReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInfluencedVariableReferenceAdapter() {
+		if (influencedVariableReferenceItemProvider == null) {
+			influencedVariableReferenceItemProvider = new InfluencedVariableReferenceItemProvider(this);
+		}
+
+		return influencedVariableReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ShadowParameterItemProvider shadowParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createShadowParameterAdapter() {
+		if (shadowParameterItemProvider == null) {
+			shadowParameterItemProvider = new ShadowParameterItemProvider(this);
+		}
+
+		return shadowParameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DependencyRelationshipItemProvider dependencyRelationshipItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyRelationship}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDependencyRelationshipAdapter() {
+		if (dependencyRelationshipItemProvider == null) {
+			dependencyRelationshipItemProvider = new DependencyRelationshipItemProvider(this);
+		}
+
+		return dependencyRelationshipItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DependencyPropagationRelationshipItemProvider dependencyPropagationRelationshipItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.DependencyPropagationRelationship}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDependencyPropagationRelationshipAdapter() {
+		if (dependencyPropagationRelationshipItemProvider == null) {
+			dependencyPropagationRelationshipItemProvider = new DependencyPropagationRelationshipItemProvider(this);
+		}
+
+		return dependencyPropagationRelationshipItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComponentInstanceReferenceItemProvider componentInstanceReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ComponentInstanceReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createComponentInstanceReferenceAdapter() {
+		if (componentInstanceReferenceItemProvider == null) {
+			componentInstanceReferenceItemProvider = new ComponentInstanceReferenceItemProvider(this);
+		}
+
+		return componentInstanceReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServiceInputParameterItemProvider serviceInputParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createServiceInputParameterAdapter() {
+		if (serviceInputParameterItemProvider == null) {
+			serviceInputParameterItemProvider = new ServiceInputParameterItemProvider(this);
+		}
+
+		return serviceInputParameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalCallReturnParameterItemProvider externalCallReturnParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallReturnParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExternalCallReturnParameterAdapter() {
+		if (externalCallReturnParameterItemProvider == null) {
+			externalCallReturnParameterItemProvider = new ExternalCallReturnParameterItemProvider(this);
+		}
+
+		return externalCallReturnParameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalCallParameterItemProvider externalCallParameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ExternalCallParameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExternalCallParameterAdapter() {
+		if (externalCallParameterItemProvider == null) {
+			externalCallParameterItemProvider = new ExternalCallParameterItemProvider(this);
+		}
+
+		return externalCallParameterItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (scopeSetItemProvider != null) scopeSetItemProvider.dispose();
+		if (scopeItemProvider != null) scopeItemProvider.dispose();
+		if (influencedVariableReferenceItemProvider != null) influencedVariableReferenceItemProvider.dispose();
+		if (shadowParameterItemProvider != null) shadowParameterItemProvider.dispose();
+		if (dependencyRelationshipItemProvider != null) dependencyRelationshipItemProvider.dispose();
+		if (dependencyPropagationRelationshipItemProvider != null) dependencyPropagationRelationshipItemProvider.dispose();
+		if (componentInstanceReferenceItemProvider != null) componentInstanceReferenceItemProvider.dispose();
+		if (serviceInputParameterItemProvider != null) serviceInputParameterItemProvider.dispose();
+		if (externalCallReturnParameterItemProvider != null) externalCallReturnParameterItemProvider.dispose();
+		if (externalCallParameterItemProvider != null) externalCallParameterItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..27aa0242de1056e2a7bf79b7ef7865d5398f48de
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/RelationshipItemProvider.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Relationship;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.RelationshipCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Relationship} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RelationshipItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RelationshipItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSurroundingEntityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Surrounding Entity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSurroundingEntityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Relationship_surroundingEntity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Relationship_surroundingEntity_feature", "_UI_Relationship_type"),
+				 ParameterdependenciesPackage.Literals.RELATIONSHIP__SURROUNDING_ENTITY,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.RELATIONSHIP__CHARACTERIZATION);
+			childrenFeatures.add(ParameterdependenciesPackage.Literals.RELATIONSHIP__EXPLICIT_DESCRIPTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		RelationshipCharacterizationType labelValue = ((Relationship)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Relationship_type") :
+			getString("_UI_Relationship_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Relationship.class)) {
+			case ParameterdependenciesPackage.RELATIONSHIP__EXPLICIT_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+			case ParameterdependenciesPackage.RELATIONSHIP__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.RELATIONSHIP__CHARACTERIZATION,
+				 RelationshipCharacterizationType.EMPIRICAL));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ParameterdependenciesPackage.Literals.RELATIONSHIP__EXPLICIT_DESCRIPTION,
+				 FunctionsFactory.eINSTANCE.createExplicitDescription()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..145f072a03ff0f3d206305d293a67a870ac9aa94
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeItemProvider.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.Scope} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScopeItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScopeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addScopePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Scope feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addScopePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Scope_scope_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Scope_scope_feature", "_UI_Scope_type"),
+				 ParameterdependenciesPackage.Literals.SCOPE__SCOPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Scope.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Scope"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_Scope_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..017cfc603ed728f20265be323009d059411a4ab4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ScopeSetItemProvider.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ScopeSet} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScopeSetItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScopeSetItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addScopePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Scope feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addScopePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ScopeSet_scope_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ScopeSet_scope_feature", "_UI_ScopeSet_type"),
+				 ParameterdependenciesPackage.Literals.SCOPE_SET__SCOPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ScopeSet.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ScopeSet"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ScopeSet_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a79bf64ed3d57400e9f0a43209397cb172a977ba
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ServiceInputParameterItemProvider.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterCharacterizationType;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ServiceInputParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServiceInputParameterItemProvider extends CallParameterItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServiceInputParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addProvidingRolePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ServiceInputParameter_providingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ServiceInputParameter_providingRole_feature", "_UI_ServiceInputParameter_type"),
+				 ParameterdependenciesPackage.Literals.SERVICE_INPUT_PARAMETER__PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ServiceInputParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ServiceInputParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ParameterCharacterizationType labelValue = ((ServiceInputParameter)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ServiceInputParameter_type") :
+			getString("_UI_ServiceInputParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c22e6693916edf0eb35e54ad53c34e0739a2e6fd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/provider/ShadowParameterItemProvider.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ShadowParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ShadowParameterItemProvider extends InfluencingParameterItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ShadowParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ShadowParameter_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ShadowParameter_name_feature", "_UI_ShadowParameter_type"),
+				 ParameterdependenciesPackage.Literals.SHADOW_PARAMETER__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ShadowParameter_description_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ShadowParameter_description_feature", "_UI_ShadowParameter_type"),
+				 ParameterdependenciesPackage.Literals.SHADOW_PARAMETER__DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ShadowParameter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ShadowParameter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ShadowParameter)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ShadowParameter_type") :
+			getString("_UI_ShadowParameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ShadowParameter.class)) {
+			case ParameterdependenciesPackage.SHADOW_PARAMETER__NAME:
+			case ParameterdependenciesPackage.SHADOW_PARAMETER__DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9f5e6471c79207261f4e6f3213b265f3066bca4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/provider/ApplicationlevelEditPlugin.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Applicationlevel edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ApplicationlevelEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final ApplicationlevelEditPlugin INSTANCE = new ApplicationlevelEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApplicationlevelEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     CoreEditPlugin.INSTANCE,
+		     IdentifierEditPlugin.INSTANCE,
+		     ResourcelandscapeEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa005b3f5867a5d7d30805edf59da843e3374976
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyConnectorItemProvider.java
@@ -0,0 +1,211 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.ConnectorItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AssemblyConnectorItemProvider extends ConnectorItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AssemblyConnectorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInterfaceRequiringRolePropertyDescriptor(object);
+			addInterfaceProvidingRolePropertyDescriptor(object);
+			addProvidingAssemblyContextPropertyDescriptor(object);
+			addRequiringAssemblyContextPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface Requiring Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfaceRequiringRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AssemblyConnector_interfaceRequiringRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_interfaceRequiringRole_feature", "_UI_AssemblyConnector_type"),
+				 RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__INTERFACE_REQUIRING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfaceProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AssemblyConnector_interfaceProvidingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_interfaceProvidingRole_feature", "_UI_AssemblyConnector_type"),
+				 RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__INTERFACE_PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Providing Assembly Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProvidingAssemblyContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AssemblyConnector_providingAssemblyContext_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_providingAssemblyContext_feature", "_UI_AssemblyConnector_type"),
+				 RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__PROVIDING_ASSEMBLY_CONTEXT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Requiring Assembly Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRequiringAssemblyContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AssemblyConnector_requiringAssemblyContext_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AssemblyConnector_requiringAssemblyContext_feature", "_UI_AssemblyConnector_type"),
+				 RepositoryPackage.Literals.ASSEMBLY_CONNECTOR__REQUIRING_ASSEMBLY_CONTEXT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns AssemblyConnector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AssemblyConnector"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AssemblyConnector)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_AssemblyConnector_type") :
+			getString("_UI_AssemblyConnector_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..84549212e5006a4347c1ecd78296433d34818f2a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/AssemblyContextItemProvider.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AssemblyContextItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AssemblyContextItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addEncapsulatedComponentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Encapsulated Component feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addEncapsulatedComponentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AssemblyContext_encapsulatedComponent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AssemblyContext_encapsulatedComponent_feature", "_UI_AssemblyContext_type"),
+				 RepositoryPackage.Literals.ASSEMBLY_CONTEXT__ENCAPSULATED_COMPONENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns AssemblyContext.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AssemblyContext"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AssemblyContext)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_AssemblyContext_type") :
+			getString("_UI_AssemblyContext_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..63f1b986035dbe25dbc37d19be7860a315168612
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java
@@ -0,0 +1,155 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasicComponentItemProvider extends RepositoryComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BasicComponentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__SEMAPHORES);
+			childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BasicComponent.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BasicComponent"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((BasicComponent)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_BasicComponent_type") :
+			getString("_UI_BasicComponent_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BasicComponent.class)) {
+			case RepositoryPackage.BASIC_COMPONENT__SEMAPHORES:
+			case RepositoryPackage.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.BASIC_COMPONENT__SEMAPHORES,
+				 RepositoryFactory.eINSTANCE.createSemaphore()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createFineGrainedBehavior()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..48e38d65287acbb2637253b6a468f7cf5d46d940
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CollectionDataTypeItemProvider.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CollectionDataTypeItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CollectionDataTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInnerTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Inner Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInnerTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CollectionDataType_innerType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CollectionDataType_innerType_feature", "_UI_CollectionDataType_type"),
+				 RepositoryPackage.Literals.COLLECTION_DATA_TYPE__INNER_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns CollectionDataType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CollectionDataType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CollectionDataType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CollectionDataType_type") :
+			getString("_UI_CollectionDataType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..08afa814aafe1c58a4f7fa465670a48f43f52366
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedProvidingRequiringEntityItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComposedProvidingRequiringEntityItemProvider extends ComposedStructureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposedProvidingRequiringEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRelationshipsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Relationships feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRelationshipsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InterfaceProvidingRequiringEntity_relationships_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRequiringEntity_relationships_feature", "_UI_InterfaceProvidingRequiringEntity_type"),
+				 RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__RELATIONSHIPS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ComposedProvidingRequiringEntity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ComposedProvidingRequiringEntity_type") :
+			getString("_UI_ComposedProvidingRequiringEntity_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ComposedProvidingRequiringEntity.class)) {
+			case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__INTERFACE_PROVIDING_ROLES:
+			case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__BLACK_BOX_BEHAVIOR:
+			case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES:
+			case RepositoryPackage.COMPOSED_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES,
+				 RepositoryFactory.eINSTANCE.createInterfaceProvidingRole()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createBlackBoxBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES,
+				 RepositoryFactory.eINSTANCE.createInterfaceRequiringRole()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createCoarseGrainedBehavior()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..00252920761f999a4e28df593283cfe62e15c223
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ComposedStructureItemProvider.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedStructure;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedStructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComposedStructureItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposedStructureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ComposedStructure)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ComposedStructure_type") :
+			getString("_UI_ComposedStructure_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ComposedStructure.class)) {
+			case RepositoryPackage.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS:
+			case RepositoryPackage.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS:
+			case RepositoryPackage.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS:
+			case RepositoryPackage.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS,
+				 RepositoryFactory.eINSTANCE.createAssemblyContext()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createAssemblyConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createProvidingDelegationConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createRequiringDelegationConnector()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe576d44ea2fd067dca7711e9590b314f32458ea
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeComponentItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompositeComponentItemProvider extends RepositoryComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeComponentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CompositeComponent.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeComponent"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CompositeComponent)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CompositeComponent_type") :
+			getString("_UI_CompositeComponent_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CompositeComponent.class)) {
+			case RepositoryPackage.COMPOSITE_COMPONENT__ASSEMBLY_CONTEXTS:
+			case RepositoryPackage.COMPOSITE_COMPONENT__ASSEMBLY_CONNECTORS:
+			case RepositoryPackage.COMPOSITE_COMPONENT__PROVIDING_DELEGATION_CONNECTORS:
+			case RepositoryPackage.COMPOSITE_COMPONENT__REQUIRING_DELEGATION_CONNECTORS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS,
+				 RepositoryFactory.eINSTANCE.createAssemblyContext()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createAssemblyConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createProvidingDelegationConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createRequiringDelegationConnector()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..59afc31d334718cce51b0980a239306c74730086
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/CompositeDataTypeItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompositeDataTypeItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeDataTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentTypesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent Types feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentTypesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CompositeDataType_parentTypes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CompositeDataType_parentTypes_feature", "_UI_CompositeDataType_type"),
+				 RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__PARENT_TYPES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CompositeDataType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeDataType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CompositeDataType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CompositeDataType_type") :
+			getString("_UI_CompositeDataType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CompositeDataType.class)) {
+			case RepositoryPackage.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSITE_DATA_TYPE__INNER_DECLARATIONS,
+				 RepositoryFactory.eINSTANCE.createInnerDeclaration()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a185c55964178891e6d7768d0f2c7e493e29e6dc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DataTypeItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.DataType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DataTypeItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_DataType_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a2871c4aa254e1cbd4ced3b5e56bbbfee3ff9cd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/DelegationConnectorItemProvider.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.ConnectorItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.DelegationConnector;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.DelegationConnector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DelegationConnectorItemProvider extends ConnectorItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DelegationConnectorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAssemblyContextPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Assembly Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAssemblyContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DelegationConnector_assemblyContext_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DelegationConnector_assemblyContext_feature", "_UI_DelegationConnector_type"),
+				 RepositoryPackage.Literals.DELEGATION_CONNECTOR__ASSEMBLY_CONTEXT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((DelegationConnector)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DelegationConnector_type") :
+			getString("_UI_DelegationConnector_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0754b88ec00f353d46276c3cb146353c508b059
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ImportItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Import;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Import} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImportItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImportItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addImportURIPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Import URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImportURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Import_importURI_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Import_importURI_feature", "_UI_Import_type"),
+				 RepositoryPackage.Literals.IMPORT__IMPORT_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Import.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Import"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Import)object).getImportURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Import_type") :
+			getString("_UI_Import_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Import.class)) {
+			case RepositoryPackage.IMPORT__IMPORT_URI:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ea8d2ce79333cd3995ea42846d86e57470acc80
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InnerDeclarationItemProvider.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InnerDeclarationItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InnerDeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDataTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Data Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDataTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InnerDeclaration_dataType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InnerDeclaration_dataType_feature", "_UI_InnerDeclaration_type"),
+				 RepositoryPackage.Literals.INNER_DECLARATION__DATA_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InnerDeclaration.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InnerDeclaration"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InnerDeclaration)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InnerDeclaration_type") :
+			getString("_UI_InnerDeclaration_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..202388ba2d2536a1ba65c013bb6550129a6c4d57
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentInterfacesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent Interfaces feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentInterfacesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Interface_parentInterfaces_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Interface_parentInterfaces_feature", "_UI_Interface_type"),
+				 RepositoryPackage.Literals.INTERFACE__PARENT_INTERFACES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE__SIGNATURES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Interface.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Interface"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Interface)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Interface_type") :
+			getString("_UI_Interface_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Interface.class)) {
+			case RepositoryPackage.INTERFACE__SIGNATURES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE__SIGNATURES,
+				 RepositoryFactory.eINSTANCE.createSignature()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1fd9fee04e3108055052550271d40fa35afbc767
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingEntityItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingEntity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceProvidingEntityItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceProvidingEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterfaceProvidingEntity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterfaceProvidingEntity_type") :
+			getString("_UI_InterfaceProvidingEntity_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InterfaceProvidingEntity.class)) {
+			case RepositoryPackage.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES:
+			case RepositoryPackage.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__INTERFACE_PROVIDING_ROLES,
+				 RepositoryFactory.eINSTANCE.createInterfaceProvidingRole()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_ENTITY__BLACK_BOX_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createBlackBoxBehavior()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b23b40f4ed0e20a09490a2a4d15870bf25e5490
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRequiringEntityItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRequiringEntity;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRequiringEntity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceProvidingRequiringEntityItemProvider extends InterfaceProvidingEntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceProvidingRequiringEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addRelationshipsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Relationships feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRelationshipsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InterfaceProvidingRequiringEntity_relationships_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRequiringEntity_relationships_feature", "_UI_InterfaceProvidingRequiringEntity_type"),
+				 RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__RELATIONSHIPS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterfaceProvidingRequiringEntity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterfaceProvidingRequiringEntity_type") :
+			getString("_UI_InterfaceProvidingRequiringEntity_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InterfaceProvidingRequiringEntity.class)) {
+			case RepositoryPackage.INTERFACE_PROVIDING_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES:
+			case RepositoryPackage.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES,
+				 RepositoryFactory.eINSTANCE.createInterfaceRequiringRole()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_PROVIDING_REQUIRING_ENTITY__COARSE_GRAINED_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createCoarseGrainedBehavior()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2dc5f2b73b16b886aa0783701bfa9a5964853f8c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceProvidingRoleItemProvider.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceProvidingRoleItemProvider extends RoleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceProvidingRoleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInterfacePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfacePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InterfaceProvidingRole_interface_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InterfaceProvidingRole_interface_feature", "_UI_InterfaceProvidingRole_type"),
+				 RepositoryPackage.Literals.INTERFACE_PROVIDING_ROLE__INTERFACE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InterfaceProvidingRole.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InterfaceProvidingRole"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterfaceProvidingRole)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterfaceProvidingRole_type") :
+			getString("_UI_InterfaceProvidingRole_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..79030b7a5c1ca4990357ff855a7fc0abb20db01c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringEntityItemProvider.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringEntity;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringEntity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceRequiringEntityItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceRequiringEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterfaceRequiringEntity)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterfaceRequiringEntity_type") :
+			getString("_UI_InterfaceRequiringEntity_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InterfaceRequiringEntity.class)) {
+			case RepositoryPackage.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.INTERFACE_REQUIRING_ENTITY__INTERFACE_REQUIRING_ROLES,
+				 RepositoryFactory.eINSTANCE.createInterfaceRequiringRole()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb19b347081e79a3e03529e2cfa51d9888052a36
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/InterfaceRequiringRoleItemProvider.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InterfaceRequiringRoleItemProvider extends RoleItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InterfaceRequiringRoleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInterfacePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfacePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_InterfaceRequiringRole_interface_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_InterfaceRequiringRole_interface_feature", "_UI_InterfaceRequiringRole_type"),
+				 RepositoryPackage.Literals.INTERFACE_REQUIRING_ROLE__INTERFACE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns InterfaceRequiringRole.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InterfaceRequiringRole"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InterfaceRequiringRole)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_InterfaceRequiringRole_type") :
+			getString("_UI_InterfaceRequiringRole_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a7339482d01e78a9caeb3757400176f1a802df3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ParameterItemProvider.java
@@ -0,0 +1,162 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.NamedElementItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterItemProvider extends NamedElementItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addModifierPropertyDescriptor(object);
+			addDataTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Modifier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addModifierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Parameter_modifier_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_modifier_feature", "_UI_Parameter_type"),
+				 RepositoryPackage.Literals.PARAMETER__MODIFIER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Data Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDataTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Parameter_dataType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Parameter_dataType_feature", "_UI_Parameter_type"),
+				 RepositoryPackage.Literals.PARAMETER__DATA_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Parameter)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Parameter_type") :
+			getString("_UI_Parameter_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Parameter.class)) {
+			case RepositoryPackage.PARAMETER__MODIFIER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa7bce12577e9058d9c8bca957a562fe82621c5e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/PrimitiveDataTypeItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PrimitiveDataTypeItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PrimitiveDataTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PrimitiveDataType_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PrimitiveDataType_type_feature", "_UI_PrimitiveDataType_type"),
+				 RepositoryPackage.Literals.PRIMITIVE_DATA_TYPE__TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns PrimitiveDataType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PrimitiveDataType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PrimitiveDataType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PrimitiveDataType_type") :
+			getString("_UI_PrimitiveDataType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PrimitiveDataType.class)) {
+			case RepositoryPackage.PRIMITIVE_DATA_TYPE__TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8bdd89df2c9190600241cead0446993908dbc36
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/ProvidingDelegationConnectorItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProvidingDelegationConnectorItemProvider extends DelegationConnectorItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProvidingDelegationConnectorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInnerInterfaceProvidingRolePropertyDescriptor(object);
+			addOuterInterfaceProvidingRolePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Inner Interface Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInnerInterfaceProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ProvidingDelegationConnector_innerInterfaceProvidingRole_feature", "_UI_ProvidingDelegationConnector_type"),
+				 RepositoryPackage.Literals.PROVIDING_DELEGATION_CONNECTOR__INNER_INTERFACE_PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Outer Interface Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOuterInterfaceProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ProvidingDelegationConnector_outerInterfaceProvidingRole_feature", "_UI_ProvidingDelegationConnector_type"),
+				 RepositoryPackage.Literals.PROVIDING_DELEGATION_CONNECTOR__OUTER_INTERFACE_PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ProvidingDelegationConnector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ProvidingDelegationConnector"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ProvidingDelegationConnector)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ProvidingDelegationConnector_type") :
+			getString("_UI_ProvidingDelegationConnector_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d35454d224b6639900c81eb9589d51dca3e66277
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryComponentItemProvider.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryComponent;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryComponent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryComponentItemProvider extends InterfaceProvidingRequiringEntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RepositoryComponentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns RepositoryComponent.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RepositoryComponent"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((RepositoryComponent)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_RepositoryComponent_type") :
+			getString("_UI_RepositoryComponent_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b52e1c7231dcc4ef72671be4a2a833b8a175b472
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+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.RepositoryPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RepositoryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__IMPORTS);
+			childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__DATATYPES);
+			childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__INTERFACES);
+			childrenFeatures.add(RepositoryPackage.Literals.REPOSITORY__COMPONENTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Repository.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Repository"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Repository)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Repository_type") :
+			getString("_UI_Repository_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Repository.class)) {
+			case RepositoryPackage.REPOSITORY__IMPORTS:
+			case RepositoryPackage.REPOSITORY__DATATYPES:
+			case RepositoryPackage.REPOSITORY__INTERFACES:
+			case RepositoryPackage.REPOSITORY__COMPONENTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__IMPORTS,
+				 RepositoryFactory.eINSTANCE.createImport()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__DATATYPES,
+				 RepositoryFactory.eINSTANCE.createCollectionDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__DATATYPES,
+				 RepositoryFactory.eINSTANCE.createCompositeDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__DATATYPES,
+				 RepositoryFactory.eINSTANCE.createPrimitiveDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__INTERFACES,
+				 RepositoryFactory.eINSTANCE.createInterface()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__COMPONENTS,
+				 RepositoryFactory.eINSTANCE.createBasicComponent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__COMPONENTS,
+				 RepositoryFactory.eINSTANCE.createCompositeComponent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.REPOSITORY__COMPONENTS,
+				 RepositoryFactory.eINSTANCE.createSubSystem()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c8b89e0c67b76cc5e1d5943a90f01b3254844f0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RepositoryItemProviderAdapterFactory.java
@@ -0,0 +1,632 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.util.RepositoryAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryItemProviderAdapterFactory extends RepositoryAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RepositoryItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Import} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImportItemProvider importItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Import}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createImportAdapter() {
+		if (importItemProvider == null) {
+			importItemProvider = new ImportItemProvider(this);
+		}
+
+		return importItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InterfaceRequiringRoleItemProvider interfaceRequiringRoleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInterfaceRequiringRoleAdapter() {
+		if (interfaceRequiringRoleItemProvider == null) {
+			interfaceRequiringRoleItemProvider = new InterfaceRequiringRoleItemProvider(this);
+		}
+
+		return interfaceRequiringRoleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InterfaceProvidingRoleItemProvider interfaceProvidingRoleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInterfaceProvidingRoleAdapter() {
+		if (interfaceProvidingRoleItemProvider == null) {
+			interfaceProvidingRoleItemProvider = new InterfaceProvidingRoleItemProvider(this);
+		}
+
+		return interfaceProvidingRoleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InterfaceItemProvider interfaceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Interface}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInterfaceAdapter() {
+		if (interfaceItemProvider == null) {
+			interfaceItemProvider = new InterfaceItemProvider(this);
+		}
+
+		return interfaceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SignatureItemProvider signatureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSignatureAdapter() {
+		if (signatureItemProvider == null) {
+			signatureItemProvider = new SignatureItemProvider(this);
+		}
+
+		return signatureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterItemProvider parameterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Parameter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createParameterAdapter() {
+		if (parameterItemProvider == null) {
+			parameterItemProvider = new ParameterItemProvider(this);
+		}
+
+		return parameterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepositoryItemProvider repositoryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Repository}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createRepositoryAdapter() {
+		if (repositoryItemProvider == null) {
+			repositoryItemProvider = new RepositoryItemProvider(this);
+		}
+
+		return repositoryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BasicComponentItemProvider basicComponentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBasicComponentAdapter() {
+		if (basicComponentItemProvider == null) {
+			basicComponentItemProvider = new BasicComponentItemProvider(this);
+		}
+
+		return basicComponentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SemaphoreItemProvider semaphoreItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSemaphoreAdapter() {
+		if (semaphoreItemProvider == null) {
+			semaphoreItemProvider = new SemaphoreItemProvider(this);
+		}
+
+		return semaphoreItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CompositeComponentItemProvider compositeComponentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCompositeComponentAdapter() {
+		if (compositeComponentItemProvider == null) {
+			compositeComponentItemProvider = new CompositeComponentItemProvider(this);
+		}
+
+		return compositeComponentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SubSystemItemProvider subSystemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSubSystemAdapter() {
+		if (subSystemItemProvider == null) {
+			subSystemItemProvider = new SubSystemItemProvider(this);
+		}
+
+		return subSystemItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CollectionDataTypeItemProvider collectionDataTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CollectionDataType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCollectionDataTypeAdapter() {
+		if (collectionDataTypeItemProvider == null) {
+			collectionDataTypeItemProvider = new CollectionDataTypeItemProvider(this);
+		}
+
+		return collectionDataTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CompositeDataTypeItemProvider compositeDataTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeDataType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCompositeDataTypeAdapter() {
+		if (compositeDataTypeItemProvider == null) {
+			compositeDataTypeItemProvider = new CompositeDataTypeItemProvider(this);
+		}
+
+		return compositeDataTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InnerDeclarationItemProvider innerDeclarationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.InnerDeclaration}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInnerDeclarationAdapter() {
+		if (innerDeclarationItemProvider == null) {
+			innerDeclarationItemProvider = new InnerDeclarationItemProvider(this);
+		}
+
+		return innerDeclarationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PrimitiveDataTypeItemProvider primitiveDataTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.PrimitiveDataType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createPrimitiveDataTypeAdapter() {
+		if (primitiveDataTypeItemProvider == null) {
+			primitiveDataTypeItemProvider = new PrimitiveDataTypeItemProvider(this);
+		}
+
+		return primitiveDataTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AssemblyContextItemProvider assemblyContextItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAssemblyContextAdapter() {
+		if (assemblyContextItemProvider == null) {
+			assemblyContextItemProvider = new AssemblyContextItemProvider(this);
+		}
+
+		return assemblyContextItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AssemblyConnectorItemProvider assemblyConnectorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyConnector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAssemblyConnectorAdapter() {
+		if (assemblyConnectorItemProvider == null) {
+			assemblyConnectorItemProvider = new AssemblyConnectorItemProvider(this);
+		}
+
+		return assemblyConnectorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProvidingDelegationConnectorItemProvider providingDelegationConnectorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createProvidingDelegationConnectorAdapter() {
+		if (providingDelegationConnectorItemProvider == null) {
+			providingDelegationConnectorItemProvider = new ProvidingDelegationConnectorItemProvider(this);
+		}
+
+		return providingDelegationConnectorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RequiringDelegationConnectorItemProvider requiringDelegationConnectorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createRequiringDelegationConnectorAdapter() {
+		if (requiringDelegationConnectorItemProvider == null) {
+			requiringDelegationConnectorItemProvider = new RequiringDelegationConnectorItemProvider(this);
+		}
+
+		return requiringDelegationConnectorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (importItemProvider != null) importItemProvider.dispose();
+		if (interfaceRequiringRoleItemProvider != null) interfaceRequiringRoleItemProvider.dispose();
+		if (interfaceProvidingRoleItemProvider != null) interfaceProvidingRoleItemProvider.dispose();
+		if (interfaceItemProvider != null) interfaceItemProvider.dispose();
+		if (signatureItemProvider != null) signatureItemProvider.dispose();
+		if (parameterItemProvider != null) parameterItemProvider.dispose();
+		if (repositoryItemProvider != null) repositoryItemProvider.dispose();
+		if (basicComponentItemProvider != null) basicComponentItemProvider.dispose();
+		if (semaphoreItemProvider != null) semaphoreItemProvider.dispose();
+		if (compositeComponentItemProvider != null) compositeComponentItemProvider.dispose();
+		if (subSystemItemProvider != null) subSystemItemProvider.dispose();
+		if (collectionDataTypeItemProvider != null) collectionDataTypeItemProvider.dispose();
+		if (compositeDataTypeItemProvider != null) compositeDataTypeItemProvider.dispose();
+		if (innerDeclarationItemProvider != null) innerDeclarationItemProvider.dispose();
+		if (primitiveDataTypeItemProvider != null) primitiveDataTypeItemProvider.dispose();
+		if (assemblyContextItemProvider != null) assemblyContextItemProvider.dispose();
+		if (assemblyConnectorItemProvider != null) assemblyConnectorItemProvider.dispose();
+		if (providingDelegationConnectorItemProvider != null) providingDelegationConnectorItemProvider.dispose();
+		if (requiringDelegationConnectorItemProvider != null) requiringDelegationConnectorItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fcb18cbe895a11622789e26fe6b92d183cb02d8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RequiringDelegationConnectorItemProvider.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RequiringDelegationConnectorItemProvider extends DelegationConnectorItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RequiringDelegationConnectorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInnerInterfaceRequiringRolePropertyDescriptor(object);
+			addOuterInterfaceRequiringRolePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Inner Interface Requiring Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInnerInterfaceRequiringRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_RequiringDelegationConnector_innerInterfaceRequiringRole_feature", "_UI_RequiringDelegationConnector_type"),
+				 RepositoryPackage.Literals.REQUIRING_DELEGATION_CONNECTOR__INNER_INTERFACE_REQUIRING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Outer Interface Requiring Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOuterInterfaceRequiringRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_RequiringDelegationConnector_outerInterfaceRequiringRole_feature", "_UI_RequiringDelegationConnector_type"),
+				 RepositoryPackage.Literals.REQUIRING_DELEGATION_CONNECTOR__OUTER_INTERFACE_REQUIRING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns RequiringDelegationConnector.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RequiringDelegationConnector"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((RequiringDelegationConnector)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_RequiringDelegationConnector_type") :
+			getString("_UI_RequiringDelegationConnector_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2d413260824084f2e27a95847df23cba4adf2cb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/RoleItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Role;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Role} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RoleItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RoleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Role)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Role_type") :
+			getString("_UI_Role_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..18bfeefb5ea36601aa1633f4165cff2a57912ca3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SemaphoreItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Semaphore} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SemaphoreItemProvider extends AdaptableEntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SemaphoreItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCapacityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Capacity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCapacityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Semaphore_capacity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Semaphore_capacity_feature", "_UI_Semaphore_type"),
+				 RepositoryPackage.Literals.SEMAPHORE__CAPACITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Semaphore.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Semaphore"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Semaphore)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Semaphore_type") :
+			getString("_UI_Semaphore_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Semaphore.class)) {
+			case RepositoryPackage.SEMAPHORE__CAPACITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..200cdca188a154f9f38fbf53de140ccb5b48b826
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SignatureItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.Signature} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SignatureItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SignatureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addReturnTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Return Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReturnTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Signature_returnType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Signature_returnType_feature", "_UI_Signature_type"),
+				 RepositoryPackage.Literals.SIGNATURE__RETURN_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.SIGNATURE__PARAMETERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Signature.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Signature"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Signature)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Signature_type") :
+			getString("_UI_Signature_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Signature.class)) {
+			case RepositoryPackage.SIGNATURE__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.SIGNATURE__PARAMETERS,
+				 RepositoryFactory.eINSTANCE.createParameter()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..be225224ae8d7818d632a512a841cfe911b2bdc3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/provider/SubSystemItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.repository.SubSystem} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SubSystemItemProvider extends RepositoryComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SubSystemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS);
+			childrenFeatures.add(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns SubSystem.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SubSystem"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((SubSystem)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_SubSystem_type") :
+			getString("_UI_SubSystem_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(SubSystem.class)) {
+			case RepositoryPackage.SUB_SYSTEM__ASSEMBLY_CONTEXTS:
+			case RepositoryPackage.SUB_SYSTEM__ASSEMBLY_CONNECTORS:
+			case RepositoryPackage.SUB_SYSTEM__PROVIDING_DELEGATION_CONNECTORS:
+			case RepositoryPackage.SUB_SYSTEM__REQUIRING_DELEGATION_CONNECTORS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONTEXTS,
+				 RepositoryFactory.eINSTANCE.createAssemblyContext()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__ASSEMBLY_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createAssemblyConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createProvidingDelegationConnector()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS,
+				 RepositoryFactory.eINSTANCE.createRequiringDelegationConnector()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1e8046b1eca49c2c968d85f4aa297aa9e16a81f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AbstractActionItemProvider.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AbstractAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractActionItemProvider 
+	extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AbstractActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns AbstractAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AbstractAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AbstractAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..81b4a30a87a607ef84d6974d6f3eb36e5dd25f80
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/AcquireActionItemProvider.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AcquireActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AcquireActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSemaphorePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Semaphore feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSemaphorePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AcquireAction_semaphore_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AcquireAction_semaphore_feature", "_UI_AcquireAction_type"),
+				 ServicebehaviorPackage.Literals.ACQUIRE_ACTION__SEMAPHORE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns AcquireAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AcquireAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AcquireAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..568fd196cf98c444dfc8cf1659173f2110f742d3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BlackBoxBehaviorItemProvider.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BlackBoxBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BlackBoxBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.BLACK_BOX_BEHAVIOR__RESPONSE_TIME);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BlackBoxBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BlackBoxBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BlackBoxBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BlackBoxBehavior.class)) {
+			case ServicebehaviorPackage.BLACK_BOX_BEHAVIOR__RESPONSE_TIME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.BLACK_BOX_BEHAVIOR__RESPONSE_TIME,
+				 ServicebehaviorFactory.eINSTANCE.createResponseTime()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..00b55571789b51e51b4e0c710a39704ac394147e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchActionItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BranchActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BranchActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCHES);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCH_PROBABILITIES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BranchAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BranchAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BranchAction.class)) {
+			case ServicebehaviorPackage.BRANCH_ACTION__BRANCHES:
+			case ServicebehaviorPackage.BRANCH_ACTION__BRANCH_PROBABILITIES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCHES,
+				 ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.BRANCH_ACTION__BRANCH_PROBABILITIES,
+				 ServicebehaviorFactory.eINSTANCE.createBranchProbabilities()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd3101984bb6bc2e84a8bfe0f8dd14d6b001af3e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/BranchProbabilitiesItemProvider.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BranchProbabilitiesItemProvider extends ControlFlowVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BranchProbabilitiesItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns BranchProbabilities.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchProbabilities"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((BranchProbabilities)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_BranchProbabilities_type") :
+			getString("_UI_BranchProbabilities_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8eea9b2b2f2709b498056ef6fe020ed92596a37
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CallFrequencyItemProvider.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CallFrequencyItemProvider extends ControlFlowVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CallFrequencyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns CallFrequency.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CallFrequency"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((CallFrequency)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CallFrequency_type") :
+			getString("_UI_CallFrequency_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..beeaf1e4471748113c1c663c3350256de462e0e3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/CoarseGrainedBehaviorItemProvider.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CoarseGrainedBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CoarseGrainedBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CoarseGrainedBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CoarseGrainedBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_CoarseGrainedBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CoarseGrainedBehavior.class)) {
+			case ServicebehaviorPackage.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY:
+			case ServicebehaviorPackage.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__EXTERNAL_CALL_FREQUENCY,
+				 ServicebehaviorFactory.eINSTANCE.createExternalCallFrequency()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COARSE_GRAINED_BEHAVIOR__RESOURCE_DEMAND,
+				 ServicebehaviorFactory.eINSTANCE.createResourceDemand()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7676708c17629a095aa349228e1555a1b8d5f023
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ComponentInternalBehaviorItemProvider.java
@@ -0,0 +1,201 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComponentInternalBehaviorItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComponentInternalBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ComponentInternalBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ComponentInternalBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ComponentInternalBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ComponentInternalBehavior.class)) {
+			case ServicebehaviorPackage.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createAcquireAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createReleaseAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createInternalAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createForkAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createBranchAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createLoopAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.COMPONENT_INTERNAL_BEHAVIOR__ACTIONS,
+				 ServicebehaviorFactory.eINSTANCE.createExternalCallAction()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0cfc0eccaaf21ae8ef0a86ff4dfbd3e3f97c621
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallActionItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalCallActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExternalCallActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.EXTERNAL_CALL_ACTION__EXTERNAL_CALL);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ExternalCallAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ExternalCallAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExternalCallAction.class)) {
+			case ServicebehaviorPackage.EXTERNAL_CALL_ACTION__EXTERNAL_CALL:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.EXTERNAL_CALL_ACTION__EXTERNAL_CALL,
+				 ServicebehaviorFactory.eINSTANCE.createExternalCall()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d04ef28cbf76e47fe7207e8d13bc334bf8f4ad43
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallFrequencyItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalCallFrequencyItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExternalCallFrequencyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__FREQUENCY);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ExternalCallFrequency.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCallFrequency"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ExternalCallFrequency_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ExternalCallFrequency.class)) {
+			case ServicebehaviorPackage.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL:
+			case ServicebehaviorPackage.EXTERNAL_CALL_FREQUENCY__FREQUENCY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__EXTERNAL_CALL,
+				 ServicebehaviorFactory.eINSTANCE.createExternalCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.EXTERNAL_CALL_FREQUENCY__FREQUENCY,
+				 ServicebehaviorFactory.eINSTANCE.createCallFrequency()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..22794cb6550bcaae7e503ce8381841606c98184e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ExternalCallItemProvider.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExternalCallItemProvider 
+	extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExternalCallItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSignaturePropertyDescriptor(object);
+			addInterfaceRequiringRolePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Signature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSignaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExternalCall_signature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExternalCall_signature_feature", "_UI_ExternalCall_type"),
+				 ServicebehaviorPackage.Literals.EXTERNAL_CALL__SIGNATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface Requiring Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfaceRequiringRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExternalCall_interfaceRequiringRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExternalCall_interfaceRequiringRole_feature", "_UI_ExternalCall_type"),
+				 ServicebehaviorPackage.Literals.EXTERNAL_CALL__INTERFACE_REQUIRING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ExternalCall.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ExternalCall"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ExternalCall)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ExternalCall_type") :
+			getString("_UI_ExternalCall_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..57eb2079004dbc8c38f29c0707b80ab648a57835
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/FineGrainedBehaviorItemProvider.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FineGrainedBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FineGrainedBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.FINE_GRAINED_BEHAVIOR__BEHAVIOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns FineGrainedBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FineGrainedBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_FineGrainedBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FineGrainedBehavior.class)) {
+			case ServicebehaviorPackage.FINE_GRAINED_BEHAVIOR__BEHAVIOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.FINE_GRAINED_BEHAVIOR__BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..365f04cd77f3416e68bdf7a80d259e6374801750
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ForkActionItemProvider.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ForkActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ForkActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addWithSynchronizationBarrierPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the With Synchronization Barrier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWithSynchronizationBarrierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ForkAction_withSynchronizationBarrier_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ForkAction_withSynchronizationBarrier_feature", "_UI_ForkAction_type"),
+				 ServicebehaviorPackage.Literals.FORK_ACTION__WITH_SYNCHRONIZATION_BARRIER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.FORK_ACTION__FORKED_BEHAVIORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ForkAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ForkAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ForkAction forkAction = (ForkAction)object;
+		return getString("_UI_ForkAction_type") + " " + forkAction.isWithSynchronizationBarrier();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ForkAction.class)) {
+			case ServicebehaviorPackage.FORK_ACTION__WITH_SYNCHRONIZATION_BARRIER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ServicebehaviorPackage.FORK_ACTION__FORKED_BEHAVIORS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.FORK_ACTION__FORKED_BEHAVIORS,
+				 ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f122234ab36b93ae9eb76852cc972aaea579e04
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/InternalActionItemProvider.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InternalActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InternalActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.INTERNAL_ACTION__RESOURCE_DEMAND);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns InternalAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InternalAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_InternalAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InternalAction.class)) {
+			case ServicebehaviorPackage.INTERNAL_ACTION__RESOURCE_DEMAND:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.INTERNAL_ACTION__RESOURCE_DEMAND,
+				 ServicebehaviorFactory.eINSTANCE.createResourceDemand()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3dd1150f494de88e785757203e3b06af69bc83b9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopActionItemProvider.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoopActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LoopActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_BODY_BEHAVIOR);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_ITERATION_COUNT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LoopAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LoopAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LoopAction.class)) {
+			case ServicebehaviorPackage.LOOP_ACTION__LOOP_BODY_BEHAVIOR:
+			case ServicebehaviorPackage.LOOP_ACTION__LOOP_ITERATION_COUNT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_BODY_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createComponentInternalBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.LOOP_ACTION__LOOP_ITERATION_COUNT,
+				 ServicebehaviorFactory.eINSTANCE.createLoopIterationCount()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..284c61fdda463acdea4fc0f76273424e2cd286a1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/LoopIterationCountItemProvider.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ControlFlowVariableItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoopIterationCountItemProvider extends ControlFlowVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LoopIterationCountItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LoopIterationCount.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopIterationCount"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((LoopIterationCount)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LoopIterationCount_type") :
+			getString("_UI_LoopIterationCount_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9148ee321a5a6d20a925df8861ccb0b2dfd3df8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ReleaseActionItemProvider.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ReleaseActionItemProvider extends AbstractActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ReleaseActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSemaphorePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Semaphore feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSemaphorePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ReleaseAction_semaphore_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ReleaseAction_semaphore_feature", "_UI_ReleaseAction_type"),
+				 ServicebehaviorPackage.Literals.RELEASE_ACTION__SEMAPHORE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ReleaseAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ReleaseAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ReleaseAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c787a6d24b323cb5813785e8915d765da5a0ac9a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResourceDemandItemProvider.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ModelVariableItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceDemandItemProvider extends ModelVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ResourceDemandItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addResourceTypePropertyDescriptor(object);
+			addCharacterizationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Resource Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addResourceTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ResourceDemand_resourceType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ResourceDemand_resourceType_feature", "_UI_ResourceDemand_type"),
+				 ServicebehaviorPackage.Literals.RESOURCE_DEMAND__RESOURCE_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Characterization feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCharacterizationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ResourceDemand_characterization_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ResourceDemand_characterization_feature", "_UI_ResourceDemand_type"),
+				 ServicebehaviorPackage.Literals.RESOURCE_DEMAND__CHARACTERIZATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ResourceDemand.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ResourceDemand"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((ResourceDemand)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ResourceDemand_type") :
+			getString("_UI_ResourceDemand_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ResourceDemand.class)) {
+			case ServicebehaviorPackage.RESOURCE_DEMAND__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ServicebehaviorPackage.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.RESOURCE_DEMAND__EXPLICIT_DESCRIPTION,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..32eb2cf977750ef0bc9a9aa6bb1b6971021f803c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ResponseTimeItemProvider.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ModelVariableCharacterizationType;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ModelVariableItemProvider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResponseTimeItemProvider extends ModelVariableItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ResponseTimeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCharacterizationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Characterization feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCharacterizationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ResponseTime_characterization_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ResponseTime_characterization_feature", "_UI_ResponseTime_type"),
+				 ServicebehaviorPackage.Literals.RESPONSE_TIME__CHARACTERIZATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.RESPONSE_TIME__EXPLICIT_DESCRIPTION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ResponseTime.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ResponseTime"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		ModelVariableCharacterizationType labelValue = ((ResponseTime)object).getCharacterization();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ResponseTime_type") :
+			getString("_UI_ResponseTime_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ResponseTime.class)) {
+			case ServicebehaviorPackage.RESPONSE_TIME__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case ServicebehaviorPackage.RESPONSE_TIME__EXPLICIT_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.RESPONSE_TIME__EXPLICIT_DESCRIPTION,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..52d13acb01a8e9c297278d57dd9db85cbd1ad8a0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServiceBehaviorAbstractionItemProvider.java
@@ -0,0 +1,230 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServiceBehaviorAbstraction;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServiceBehaviorAbstraction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServiceBehaviorAbstractionItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServiceBehaviorAbstractionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDescribedSignaturePropertyDescriptor(object);
+			addInterfaceProvidingRolePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Described Signature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDescribedSignaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ServiceBehaviorAbstraction_describedSignature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ServiceBehaviorAbstraction_describedSignature_feature", "_UI_ServiceBehaviorAbstraction_type"),
+				 ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__DESCRIBED_SIGNATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Interface Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInterfaceProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ServiceBehaviorAbstraction_interfaceProvidingRole_feature", "_UI_ServiceBehaviorAbstraction_type"),
+				 ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INTERFACE_PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ServiceBehaviorAbstraction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ServiceBehaviorAbstraction.class)) {
+			case ServicebehaviorPackage.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER:
+			case ServicebehaviorPackage.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER,
+				 ParameterdependenciesFactory.eINSTANCE.createShadowParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER,
+				 ParameterdependenciesFactory.eINSTANCE.createServiceInputParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER,
+				 ParameterdependenciesFactory.eINSTANCE.createExternalCallReturnParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCING_PARAMETER,
+				 ParameterdependenciesFactory.eINSTANCE.createExternalCallParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION__INFLUENCED_VARIABLE_REFERENCE,
+				 ParameterdependenciesFactory.eINSTANCE.createInfluencedVariableReference()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a6b34a3ee0f3a598e4930fa9c1432d68e1a3d8d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java
@@ -0,0 +1,608 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.util.ServicebehaviorAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServicebehaviorItemProviderAdapterFactory extends ServicebehaviorAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServicebehaviorItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FineGrainedBehaviorItemProvider fineGrainedBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.FineGrainedBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createFineGrainedBehaviorAdapter() {
+		if (fineGrainedBehaviorItemProvider == null) {
+			fineGrainedBehaviorItemProvider = new FineGrainedBehaviorItemProvider(this);
+		}
+
+		return fineGrainedBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComponentInternalBehaviorItemProvider componentInternalBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ComponentInternalBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createComponentInternalBehaviorAdapter() {
+		if (componentInternalBehaviorItemProvider == null) {
+			componentInternalBehaviorItemProvider = new ComponentInternalBehaviorItemProvider(this);
+		}
+
+		return componentInternalBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AcquireActionItemProvider acquireActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.AcquireAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createAcquireActionAdapter() {
+		if (acquireActionItemProvider == null) {
+			acquireActionItemProvider = new AcquireActionItemProvider(this);
+		}
+
+		return acquireActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReleaseActionItemProvider releaseActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ReleaseAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createReleaseActionAdapter() {
+		if (releaseActionItemProvider == null) {
+			releaseActionItemProvider = new ReleaseActionItemProvider(this);
+		}
+
+		return releaseActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InternalActionItemProvider internalActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.InternalAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInternalActionAdapter() {
+		if (internalActionItemProvider == null) {
+			internalActionItemProvider = new InternalActionItemProvider(this);
+		}
+
+		return internalActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ForkActionItemProvider forkActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ForkAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createForkActionAdapter() {
+		if (forkActionItemProvider == null) {
+			forkActionItemProvider = new ForkActionItemProvider(this);
+		}
+
+		return forkActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BranchActionItemProvider branchActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBranchActionAdapter() {
+		if (branchActionItemProvider == null) {
+			branchActionItemProvider = new BranchActionItemProvider(this);
+		}
+
+		return branchActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BranchProbabilitiesItemProvider branchProbabilitiesItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BranchProbabilities}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBranchProbabilitiesAdapter() {
+		if (branchProbabilitiesItemProvider == null) {
+			branchProbabilitiesItemProvider = new BranchProbabilitiesItemProvider(this);
+		}
+
+		return branchProbabilitiesItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LoopActionItemProvider loopActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLoopActionAdapter() {
+		if (loopActionItemProvider == null) {
+			loopActionItemProvider = new LoopActionItemProvider(this);
+		}
+
+		return loopActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LoopIterationCountItemProvider loopIterationCountItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.LoopIterationCount}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLoopIterationCountAdapter() {
+		if (loopIterationCountItemProvider == null) {
+			loopIterationCountItemProvider = new LoopIterationCountItemProvider(this);
+		}
+
+		return loopIterationCountItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalCallActionItemProvider externalCallActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExternalCallActionAdapter() {
+		if (externalCallActionItemProvider == null) {
+			externalCallActionItemProvider = new ExternalCallActionItemProvider(this);
+		}
+
+		return externalCallActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalCallItemProvider externalCallItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCall}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExternalCallAdapter() {
+		if (externalCallItemProvider == null) {
+			externalCallItemProvider = new ExternalCallItemProvider(this);
+		}
+
+		return externalCallItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResourceDemandItemProvider resourceDemandItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResourceDemand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createResourceDemandAdapter() {
+		if (resourceDemandItemProvider == null) {
+			resourceDemandItemProvider = new ResourceDemandItemProvider(this);
+		}
+
+		return resourceDemandItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CoarseGrainedBehaviorItemProvider coarseGrainedBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCoarseGrainedBehaviorAdapter() {
+		if (coarseGrainedBehaviorItemProvider == null) {
+			coarseGrainedBehaviorItemProvider = new CoarseGrainedBehaviorItemProvider(this);
+		}
+
+		return coarseGrainedBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExternalCallFrequencyItemProvider externalCallFrequencyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ExternalCallFrequency}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createExternalCallFrequencyAdapter() {
+		if (externalCallFrequencyItemProvider == null) {
+			externalCallFrequencyItemProvider = new ExternalCallFrequencyItemProvider(this);
+		}
+
+		return externalCallFrequencyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CallFrequencyItemProvider callFrequencyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.CallFrequency}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCallFrequencyAdapter() {
+		if (callFrequencyItemProvider == null) {
+			callFrequencyItemProvider = new CallFrequencyItemProvider(this);
+		}
+
+		return callFrequencyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BlackBoxBehaviorItemProvider blackBoxBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.BlackBoxBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBlackBoxBehaviorAdapter() {
+		if (blackBoxBehaviorItemProvider == null) {
+			blackBoxBehaviorItemProvider = new BlackBoxBehaviorItemProvider(this);
+		}
+
+		return blackBoxBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResponseTimeItemProvider responseTimeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ResponseTime}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createResponseTimeAdapter() {
+		if (responseTimeItemProvider == null) {
+			responseTimeItemProvider = new ResponseTimeItemProvider(this);
+		}
+
+		return responseTimeItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (fineGrainedBehaviorItemProvider != null) fineGrainedBehaviorItemProvider.dispose();
+		if (componentInternalBehaviorItemProvider != null) componentInternalBehaviorItemProvider.dispose();
+		if (acquireActionItemProvider != null) acquireActionItemProvider.dispose();
+		if (releaseActionItemProvider != null) releaseActionItemProvider.dispose();
+		if (internalActionItemProvider != null) internalActionItemProvider.dispose();
+		if (forkActionItemProvider != null) forkActionItemProvider.dispose();
+		if (branchActionItemProvider != null) branchActionItemProvider.dispose();
+		if (branchProbabilitiesItemProvider != null) branchProbabilitiesItemProvider.dispose();
+		if (loopActionItemProvider != null) loopActionItemProvider.dispose();
+		if (loopIterationCountItemProvider != null) loopIterationCountItemProvider.dispose();
+		if (externalCallActionItemProvider != null) externalCallActionItemProvider.dispose();
+		if (externalCallItemProvider != null) externalCallItemProvider.dispose();
+		if (resourceDemandItemProvider != null) resourceDemandItemProvider.dispose();
+		if (coarseGrainedBehaviorItemProvider != null) coarseGrainedBehaviorItemProvider.dispose();
+		if (externalCallFrequencyItemProvider != null) externalCallFrequencyItemProvider.dispose();
+		if (callFrequencyItemProvider != null) callFrequencyItemProvider.dispose();
+		if (blackBoxBehaviorItemProvider != null) blackBoxBehaviorItemProvider.dispose();
+		if (responseTimeItemProvider != null) responseTimeItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1fe9c68863e97b6371ba98268351e3274c01d8f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProvider.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.system.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.ComposedProvidingRequiringEntityItemProvider;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.system.System} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemItemProvider extends ComposedProvidingRequiringEntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns System.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/System"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((edu.kit.ipd.descartes.mm.applicationlevel.system.System)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_System_type") :
+			getString("_UI_System_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca665f3931067005857050eae55e369ca2dce7fe
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.edit/src/edu/kit/ipd/descartes/mm/applicationlevel/system/provider/SystemItemProviderAdapterFactory.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.system.provider;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.util.SystemAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemItemProviderAdapterFactory extends SystemAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.applicationlevel.system.System} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemItemProvider systemItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.applicationlevel.system.System}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSystemAdapter() {
+		if (systemItemProvider == null) {
+			systemItemProvider = new SystemItemProvider(this);
+		}
+
+		return systemItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (systemItemProvider != null) systemItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..e2b0898e44422ae3806877d45548176714919b35
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.applicationlevel.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..913f285c0f1623fb26cf3d6f68eb2423baaafb4d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation,
+ edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation,
+ edu.kit.ipd.descartes.mm.applicationlevel.presentation,
+ edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation,
+ edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation,
+ edu.kit.ipd.descartes.mm.applicationlevel.system.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf17865c125686a053bb4dd3731ec74938954169
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/FunctionsModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a2cd622f6f9e0012dec944a5ac4650e4d419db41
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ParameterdependenciesModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fa21681600f5a716d10a3287a8961d762f0bb73a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/RepositoryModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d3db6b0059d777b73ac5f5f94c86c442b813ed4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/ServicebehaviorModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c872719135ef87cc335328be9076187c3fdf7cfb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/obj16/SystemModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif
new file mode 100644
index 0000000000000000000000000000000000000000..03168bdd288f44ea10e64d5c7672216a29d702f6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewFunctions.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif
new file mode 100644
index 0000000000000000000000000000000000000000..61ca32410390f9da40cb0a7541cce4fc4cec83d7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewParameterdependencies.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0e69a72e1265b1957c0bc7fc77ad4007a56ac983
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewRepository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..54a4d3bfcee04f68a4c9f191918b9df0dc0f669e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewServicebehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif
new file mode 100644
index 0000000000000000000000000000000000000000..040a8eddef0054854e41fad3626fea58f87a3036
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.applicationlevel.editor/icons/full/wizban/NewSystem.gif differ
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e5e0f7c50180619a53d56986fa92d43636de8a8b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.properties
@@ -0,0 +1,91 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Applicationlevel Editor
+providerName = www.example.org
+
+_UI_FunctionsEditor_menu = &Functions Editor
+_UI_ParameterdependenciesEditor_menu = &Parameterdependencies Editor
+_UI_RepositoryEditor_menu = &Repository Editor
+_UI_ServicebehaviorEditor_menu = &Servicebehavior Editor
+_UI_SystemEditor_menu = &System Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_repository_category = Component Registry
+_UI_Wizard_assembly_category = Component Assembly
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_FunctionsModelWizard_label = Functions Model
+_UI_FunctionsModelWizard_description = Create a new Functions model
+
+_UI_FunctionsEditor_label = Functions Model Editor
+
+_UI_FunctionsEditorFilenameDefaultBase = My
+_UI_FunctionsEditorFilenameExtensions = functions
+
+_UI_ParameterdependenciesModelWizard_label = Parameter Dependencies Model
+_UI_ParameterdependenciesModelWizard_description = Create a new Parameter Dependencies model
+
+_UI_ParameterdependenciesEditor_label = Parameter Dependencies Model Editor
+
+_UI_ParameterdependenciesEditorFilenameDefaultBase = My
+_UI_ParameterdependenciesEditorFilenameExtensions = parameterdependencies
+
+_UI_RepositoryModelWizard_label = Repository Model
+_UI_RepositoryModelWizard_description = Create a new Repository model
+
+_UI_RepositoryEditor_label = Repository Model Editor
+
+_UI_RepositoryEditorFilenameDefaultBase = My
+_UI_RepositoryEditorFilenameExtensions = repository
+
+_UI_ServicebehaviorModelWizard_label = Service Behavior Model
+_UI_ServicebehaviorModelWizard_description = Create a new Service Behavior model
+
+_UI_ServicebehaviorEditor_label = Service Behavior Model Editor
+
+_UI_ServicebehaviorEditorFilenameDefaultBase = My
+_UI_ServicebehaviorEditorFilenameExtensions = servicebehavior
+
+_UI_SystemModelWizard_label = System Model
+_UI_SystemModelWizard_description = Create a new System model
+
+_UI_SystemEditor_label = System Model Editor
+
+_UI_SystemEditorFilenameDefaultBase = My
+_UI_SystemEditorFilenameExtensions = system
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..92e7d9386e5ac34ee41431ab38044924eac079e9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/plugin.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+<!--   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.repository.category"
+            name="%_UI_Wizard_repository_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsModelWizardID"
+            name="%_UI_FunctionsModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.repository.category"
+            icon="icons/full/obj16/FunctionsModelFile.gif">
+         <description>%_UI_FunctionsModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>-->
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated applicationlevel -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsEditorID"
+            name="%_UI_FunctionsEditor_label"
+            icon="icons/full/obj16/FunctionsModelFile.gif"
+            extensions="functions"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation.FunctionsActionBarContributor">
+      </editor>
+   </extension>
+
+<!--<extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.repository.category"
+            name="%_UI_Wizard_repository_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesModelWizardID"
+            name="%_UI_ParameterdependenciesModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.repository.category"
+            icon="icons/full/obj16/ParameterdependenciesModelFile.gif">
+         <description>%_UI_ParameterdependenciesModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>-->
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated applicationlevel -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesEditorID"
+            name="%_UI_ParameterdependenciesEditor_label"
+            icon="icons/full/obj16/ParameterdependenciesModelFile.gif"
+            extensions="parameterdependencies"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation.ParameterdependenciesActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated applicationlevel -->
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.repository.category"
+            name="%_UI_Wizard_repository_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryModelWizardID"
+            name="%_UI_RepositoryModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.repository.category"
+            icon="icons/full/obj16/RepositoryModelFile.gif">
+         <description>%_UI_RepositoryModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated applicationlevel -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryEditorID"
+            name="%_UI_RepositoryEditor_label"
+            icon="icons/full/obj16/RepositoryModelFile.gif"
+            extensions="repository"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation.RepositoryActionBarContributor">
+      </editor>
+   </extension>
+
+<!--   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.repository.category"
+            name="%_UI_Wizard_repository_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorModelWizardID"
+            name="%_UI_ServicebehaviorModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.repository.category"
+            icon="icons/full/obj16/ServicebehaviorModelFile.gif">
+         <description>%_UI_ServicebehaviorModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>-->
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated applicationlevel -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorEditorID"
+            name="%_UI_ServicebehaviorEditor_label"
+            icon="icons/full/obj16/ServicebehaviorModelFile.gif"
+            extensions="servicebehavior"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation.ServicebehaviorActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated applicationlevel -->
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.assembly.category"
+            name="%_UI_Wizard_assembly_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemModelWizardID"
+            name="%_UI_SystemModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.assembly.category"
+            icon="icons/full/obj16/SystemModelFile.gif">
+         <description>%_UI_SystemModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated applicationlevel -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemEditorID"
+            name="%_UI_SystemEditor_label"
+            icon="icons/full/obj16/SystemModelFile.gif"
+            extensions="system"
+            class="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.applicationlevel.system.presentation.SystemActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f61fe1191567b2c7296a48bece087c6e9d8d76cf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..52048405c735148bdea67d600baa5e8e1d6c8e6e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Functions model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionsActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionsActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("functions-settings"));
+		toolBarManager.add(new Separator("functions-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.functionsMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..6551c20f810151b22b4d32bbf70c343ca4e00f02
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsEditor.java
@@ -0,0 +1,1842 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Functions model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionsEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(FunctionsEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(FunctionsEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == FunctionsEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(FunctionsEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == FunctionsEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(FunctionsEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionsEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), FunctionsEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					FunctionsEditor.this.setSelectionToViewer(selection);
+					FunctionsEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..40395c27b1a6aaf667e17cc6a22802e89c4587d0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/functions/presentation/FunctionsModelWizard.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.functions.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FunctionsModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionsPackage functionsPackage = FunctionsPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionsFactory functionsFactory = functionsPackage.getFunctionsFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionsModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FunctionsModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewFunctions")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : functionsPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)functionsPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = functionsFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class FunctionsModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public FunctionsModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class FunctionsModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public FunctionsModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				ApplicationlevelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new FunctionsModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_label"));
+		newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_description"));
+		newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new FunctionsModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_FunctionsModelWizard_label"));
+		initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..aefadfed762766ee8cc849b10d88dc0cf6af234a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Parameterdependencies model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterdependenciesActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterdependenciesActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("parameterdependencies-settings"));
+		toolBarManager.add(new Separator("parameterdependencies-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.parameterdependenciesMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..871566ba82372071becaea1a06042022be894a0c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesEditor.java
@@ -0,0 +1,1842 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Parameterdependencies model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterdependenciesEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(ParameterdependenciesEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(ParameterdependenciesEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == ParameterdependenciesEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(ParameterdependenciesEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == ParameterdependenciesEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(ParameterdependenciesEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterdependenciesEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ParameterdependenciesEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					ParameterdependenciesEditor.this.setSelectionToViewer(selection);
+					ParameterdependenciesEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..67a5ec0ae504a771c8eb382b99fa8b6bccc85469
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/parameterdependencies/presentation/ParameterdependenciesModelWizard.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.ParameterdependenciesPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ParameterdependenciesModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterdependenciesPackage parameterdependenciesPackage = ParameterdependenciesPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterdependenciesFactory parameterdependenciesFactory = parameterdependenciesPackage.getParameterdependenciesFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterdependenciesModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ParameterdependenciesModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewParameterdependencies")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : parameterdependenciesPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)parameterdependenciesPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = parameterdependenciesFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ParameterdependenciesModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ParameterdependenciesModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ParameterdependenciesModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ParameterdependenciesModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				ApplicationlevelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new ParameterdependenciesModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_label"));
+		newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_description"));
+		newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new ParameterdependenciesModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ParameterdependenciesModelWizard_label"));
+		initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..e274a04ee039a072ffb2f75f31a3e72ad02de1cf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/presentation/ApplicationlevelEditorPlugin.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Applicationlevel editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ApplicationlevelEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final ApplicationlevelEditorPlugin INSTANCE = new ApplicationlevelEditorPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ApplicationlevelEditorPlugin() {
+		super
+			(new ResourceLocator [] {
+				CoreEditPlugin.INSTANCE,
+				IdentifierEditPlugin.INSTANCE,
+				ResourcelandscapeEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..da4a63746d3ffbceb6dbf4e811fb56983bc413d4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Repository model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RepositoryActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("repository-settings"));
+		toolBarManager.add(new Separator("repository-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.repositoryMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..81571e00b66231d55dd759a256810605d4ca795c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryEditor.java
@@ -0,0 +1,1846 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Repository model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(RepositoryEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(RepositoryEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == RepositoryEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(RepositoryEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == RepositoryEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(RepositoryEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RepositoryEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+		
+		// Add default resource sets to editor
+		editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/defaultresourcetypes.resourcetype");
+		editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/primitivetypes.repository");
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), RepositoryEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					RepositoryEditor.this.setSelectionToViewer(selection);
+					RepositoryEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..e74f8aa4ef73016cd2e21d1e074913ea571e1a57
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/repository/presentation/RepositoryModelWizard.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.repository.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RepositoryModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepositoryPackage repositoryPackage = RepositoryPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepositoryFactory repositoryFactory = repositoryPackage.getRepositoryFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepositoryModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RepositoryModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewRepository")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : repositoryPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)repositoryPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = repositoryFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class RepositoryModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public RepositoryModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class RepositoryModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public RepositoryModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				ApplicationlevelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new RepositoryModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_label"));
+		newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_description"));
+		newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new RepositoryModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RepositoryModelWizard_label"));
+		initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..12918d770b69db4b0df2dd472d55eed091fea814
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Servicebehavior model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServicebehaviorActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServicebehaviorActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("servicebehavior-settings"));
+		toolBarManager.add(new Separator("servicebehavior-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.servicebehaviorMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..546902fd44afd4b4494c3a7298d8e4e742f1c52c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorEditor.java
@@ -0,0 +1,1842 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Servicebehavior model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServicebehaviorEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(ServicebehaviorEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(ServicebehaviorEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == ServicebehaviorEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(ServicebehaviorEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == ServicebehaviorEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(ServicebehaviorEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServicebehaviorEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), ServicebehaviorEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					ServicebehaviorEditor.this.setSelectionToViewer(selection);
+					ServicebehaviorEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..e68f5b8f8c4fc8abe63c2bd40dd12378bfe802c8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/servicebehavior/presentation/ServicebehaviorModelWizard.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServicebehaviorModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServicebehaviorPackage servicebehaviorPackage = ServicebehaviorPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServicebehaviorFactory servicebehaviorFactory = servicebehaviorPackage.getServicebehaviorFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServicebehaviorModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ServicebehaviorModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewServicebehavior")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : servicebehaviorPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)servicebehaviorPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = servicebehaviorFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ServicebehaviorModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ServicebehaviorModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ServicebehaviorModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ServicebehaviorModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				ApplicationlevelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new ServicebehaviorModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_label"));
+		newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_description"));
+		newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new ServicebehaviorModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ServicebehaviorModelWizard_label"));
+		initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..78ed4812b53782fa8aee1b3732e13047471c720f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the System model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("system-settings"));
+		toolBarManager.add(new Separator("system-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditor_menu"), "edu.kit.ipd.descartes.mm.applicationlevel.systemMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..ae81a468e6949712d95950d2e1d53c7d6663df1c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemEditor.java
@@ -0,0 +1,1842 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a System model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(SystemEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(SystemEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == SystemEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(SystemEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == SystemEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(SystemEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.applicationlevel.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), SystemEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					SystemEditor.this.setSelectionToViewer(selection);
+					SystemEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..9138a4a0d1aeef4038ba4bc94eb02862bec3bc7a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.editor/src/edu/kit/ipd/descartes/mm/applicationlevel/system/presentation/SystemModelWizard.java
@@ -0,0 +1,631 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.applicationlevel.system.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.SystemFactory;
+import edu.kit.ipd.descartes.mm.applicationlevel.system.SystemPackage;
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.presentation.ApplicationlevelEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemPackage systemPackage = SystemPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemFactory systemFactory = systemPackage.getSystemFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ApplicationlevelEditorPlugin.INSTANCE.getImage("full/wizban/NewSystem")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : systemPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)systemPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = systemFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			ApplicationlevelEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class SystemModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public SystemModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(ApplicationlevelEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class SystemModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public SystemModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE);
+			{
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return ApplicationlevelEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				ApplicationlevelEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new SystemModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_label"));
+		newFileCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_description"));
+		newFileCreationPage.setFileName(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new SystemModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_SystemModelWizard_label"));
+		initialObjectCreationPage.setDescription(ApplicationlevelEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/.project b/edu.kit.ipd.descartes.mm.applicationlevel.library/.project
new file mode 100644
index 0000000000000000000000000000000000000000..027c9370b644b2a1000b756dcc93f8e47f918c05
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.applicationlevel.library</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..cb949177a1f41ddfc3d244f4dcc381be9193521b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: edu.kit.ipd.descartes.mm.applicationlevel.library
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.applicationlevel.library;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.emf.ecore
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties b/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c6990f2fdfd435e9715f2c548d3ee526306e27db
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               library/,\
+               plugin.xml
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype
new file mode 100644
index 0000000000000000000000000000000000000000..b304da21876af180ac951f45402a01034971f9ae
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/defaultresourcetypes.resourcetype
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resourcetype:ResourceTypeRepository xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:resourcetype="http://www.descartes-research.net/metamodel/resourcetype/0.1">
+  <resourceTypes xsi:type="resourcetype:ProcessingResourceType" id="_3ql5IJB4EeKmfoqNH_-HEA" name="CPU"/>
+  <resourceTypes xsi:type="resourcetype:ProcessingResourceType" id="_52tLYJB4EeKmfoqNH_-HEA" name="DELAY"/>
+</resourcetype:ResourceTypeRepository>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository
new file mode 100644
index 0000000000000000000000000000000000000000..deaab44eb2800a62d77037d928c71470b7b0158f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/library/primitivetypes.repository
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>
+<repository:Repository xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:repository="http://www.descartes-research.net/metamodel/repository/0.1" id="_M22LwDPEEeKm3rw9pvZMDA" name="primitivetype1">
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_M22LwTPEEeKm3rw9pvZMDA" name="boolean" type="BOOL"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_OBeL0DPEEeKm3rw9pvZMDA" name="int"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgDaOEeK3VJC2wj7WsA" name="char" type="CHAR"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgTaOEeK3VJC2wj7WsA" name="string" type="STRING"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgjaOEeK3VJC2wj7WsA" name="double" type="DOUBLE"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXgzaOEeK3VJC2wj7WsA" name="byte" type="BYTE"/>
+  <datatypes xsi:type="repository:PrimitiveDataType" id="_rulXhDaOEeK3VJC2wj7WsA" name="long" type="LONG"/>
+</repository:Repository>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml b/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2a429c76ca74847223e23c9ebad253b97ae96c8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.emf.ecore.uri_mapping">
+      <mapping
+            source="pathmap://DMM_APPLICATIONLEVEL_MODELS/"
+            target="platform:/plugin/edu.kit.ipd.descartes.mm.applicationlevel.library/library/">
+      </mapping>
+   </extension>
+   
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml b/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c31e561413886524e28c90bdc3398a56657a23d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.applicationlevel.library/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.applicationlevel.library</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/.classpath b/edu.kit.ipd.descartes.mm.deployment.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/.project b/edu.kit.ipd.descartes.mm.deployment.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..a7cb2c010b875292cf2852109ccff4b21ad34b41
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.deployment.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..70a92c0dd731216e0e07bca7e534e42014980418
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.deployment.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.deployment.provider.DeploymentEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.deployment.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.deployment;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/build.properties b/edu.kit.ipd.descartes.mm.deployment.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9d6e42e4548dd882b82535ee0b1a8a743697dfca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/ctool16/CreateDeployment_deploymentContexts_DeploymentContext.gif differ
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/Deployment.gif differ
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.edit/icons/full/obj16/DeploymentContext.gif differ
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f03a0c3a7856c6ea67f57242a1cf29e6f5bb8004
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.properties
@@ -0,0 +1,28 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Deployment Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_Deployment_type = Deployment
+_UI_DeploymentContext_type = Context
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Deployment_system_feature = System
+_UI_Deployment_targetResourceLandscape_feature = Target Resource Landscape
+_UI_Deployment_deploymentContexts_feature = Deployment Contexts
+_UI_DeploymentContext_deployment_feature = Deployment
+_UI_DeploymentContext_assemblyContext_feature = Assembly Context
+_UI_DeploymentContext_resourceContainer_feature = Resource Container
+_UI_Unknown_feature = Unspecified
+
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..777c3fe4dadfb85bbedc0baa785d158d02f39e52
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/deployment/0.1"
+            class="edu.kit.ipd.descartes.mm.deployment.provider.DeploymentItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml b/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b76711fd02fda9808e33ea6daf75af730a23ab56
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.deployment.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4530b6637b932b7914f8ce50181c7c053bcef014
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentContextItemProvider.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.deployment.DeploymentContext;
+import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentContextItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentContextItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAssemblyContextPropertyDescriptor(object);
+			addResourceContainerPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Assembly Context feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAssemblyContextPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeploymentContext_assemblyContext_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeploymentContext_assemblyContext_feature", "_UI_DeploymentContext_type"),
+				 DeploymentPackage.Literals.DEPLOYMENT_CONTEXT__ASSEMBLY_CONTEXT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Resource Container feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addResourceContainerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeploymentContext_resourceContainer_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeploymentContext_resourceContainer_feature", "_UI_DeploymentContext_type"),
+				 DeploymentPackage.Literals.DEPLOYMENT_CONTEXT__RESOURCE_CONTAINER,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DeploymentContext.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DeploymentContext"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((DeploymentContext)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_DeploymentContext_type") :
+			getString("_UI_DeploymentContext_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DeploymentEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a3e30adea9c0089cb19fe1c723450ea187edfc8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentEditPlugin.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Deployment edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class DeploymentEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final DeploymentEditPlugin INSTANCE = new DeploymentEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     ApplicationlevelEditPlugin.INSTANCE,
+		     CoreEditPlugin.INSTANCE,
+		     IdentifierEditPlugin.INSTANCE,
+		     ResourcelandscapeEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1488450b205f30707da976e42d047f10379eaa08
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProvider.java
@@ -0,0 +1,219 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.deployment.Deployment;
+import edu.kit.ipd.descartes.mm.deployment.DeploymentFactory;
+import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.deployment.Deployment} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSystemPropertyDescriptor(object);
+			addTargetResourceLandscapePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the System feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSystemPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Deployment_system_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Deployment_system_feature", "_UI_Deployment_type"),
+				 DeploymentPackage.Literals.DEPLOYMENT__SYSTEM,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Target Resource Landscape feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTargetResourceLandscapePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Deployment_targetResourceLandscape_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Deployment_targetResourceLandscape_feature", "_UI_Deployment_type"),
+				 DeploymentPackage.Literals.DEPLOYMENT__TARGET_RESOURCE_LANDSCAPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(DeploymentPackage.Literals.DEPLOYMENT__DEPLOYMENT_CONTEXTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Deployment.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Deployment"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Deployment)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Deployment_type") :
+			getString("_UI_Deployment_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Deployment.class)) {
+			case DeploymentPackage.DEPLOYMENT__DEPLOYMENT_CONTEXTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(DeploymentPackage.Literals.DEPLOYMENT__DEPLOYMENT_CONTEXTS,
+				 DeploymentFactory.eINSTANCE.createDeploymentContext()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DeploymentEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..b03790e74ec53e5594f670570697e7d8d23b0ddf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.edit/src/edu/kit/ipd/descartes/mm/deployment/provider/DeploymentItemProviderAdapterFactory.java
@@ -0,0 +1,224 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.provider;
+
+import edu.kit.ipd.descartes.mm.deployment.util.DeploymentAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentItemProviderAdapterFactory extends DeploymentAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.deployment.Deployment} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentItemProvider deploymentItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.deployment.Deployment}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDeploymentAdapter() {
+		if (deploymentItemProvider == null) {
+			deploymentItemProvider = new DeploymentItemProvider(this);
+		}
+
+		return deploymentItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentContextItemProvider deploymentContextItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.deployment.DeploymentContext}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDeploymentContextAdapter() {
+		if (deploymentContextItemProvider == null) {
+			deploymentContextItemProvider = new DeploymentContextItemProvider(this);
+		}
+
+		return deploymentContextItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (deploymentItemProvider != null) deploymentItemProvider.dispose();
+		if (deploymentContextItemProvider != null) deploymentContextItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/.classpath b/edu.kit.ipd.descartes.mm.deployment.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/.project b/edu.kit.ipd.descartes.mm.deployment.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..5b214e8ed70a3f330a85a1b52245022b7d150e5c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.deployment.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..e3cc5228df6dabbb6eedf4f4fe00fc04a7bf44c6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.deployment.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.deployment.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.deployment.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/build.properties b/edu.kit.ipd.descartes.mm.deployment.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8315589c9999c927e96598f1e8e47847159a4061
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/obj16/DeploymentModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a6b42e7444a35d684523050b8bdd4c17d1eedc18
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.deployment.editor/icons/full/wizban/NewDeployment.gif differ
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a0d638660912923643f6918dbd1b4757f04cbc28
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.properties
@@ -0,0 +1,54 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Deployment Editor
+providerName = www.example.org
+
+_UI_DeploymentEditor_menu = &Deployment Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_deployment_category = System Deployment
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_DeploymentModelWizard_label = Deployment Model
+_UI_DeploymentModelWizard_description = Create a new Deployment model
+
+_UI_DeploymentEditor_label = Deployment Model Editor
+
+_UI_DeploymentEditorFilenameDefaultBase = My
+_UI_DeploymentEditorFilenameExtensions = deployment
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c306bb4db18a87ef7e15c5dd50343ebec5e15938
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/plugin.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.deployment.category"
+            name="%_UI_Wizard_deployment_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentModelWizardID"
+            name="%_UI_DeploymentModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.deployment.category"
+            icon="icons/full/obj16/DeploymentModelFile.gif">
+         <description>%_UI_DeploymentModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditorID"
+            name="%_UI_DeploymentEditor_label"
+            icon="icons/full/obj16/DeploymentModelFile.gif"
+            extensions="deployment"
+            class="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.deployment.presentation.DeploymentActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml b/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6978b6f1940ecd4ac11131f4b6c8863b8866c2b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.deployment.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..f672b61723b24a2a3b3fd7367476ee16614213a5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentActionBarContributor.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Deployment model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(DeploymentEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					DeploymentEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(DeploymentEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("deployment-settings"));
+		toolBarManager.add(new Separator("deployment-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditor_menu"), "edu.kit.ipd.descartes.mm.deploymentMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(DeploymentEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..505d301ef9798687af57928291d01fed5a006891
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditor.java
@@ -0,0 +1,1846 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.deployment.provider.DeploymentItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Deployment model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertySheetPage propertySheetPage;
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(DeploymentEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+						getActionBarContributor().setActiveEditor(DeploymentEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == DeploymentEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter = 
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(DeploymentEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == DeploymentEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					DeploymentEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(DeploymentEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+  
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.deployment.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					DeploymentEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						DeploymentEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new DeploymentItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+									  propertySheetPage.refresh();
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.deployment.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.deployment.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), DeploymentEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		if (propertySheetPage == null) {
+			propertySheetPage =
+				new ExtendedPropertySheetPage(editingDomain) {
+					@Override
+					public void setSelectionToViewer(List<?> selection) {
+						DeploymentEditor.this.setSelectionToViewer(selection);
+						DeploymentEditor.this.setFocus();
+					}
+
+					@Override
+					public void setActionBars(IActionBars actionBars) {
+						super.setActionBars(actionBars);
+						getActionBarContributor().shareGlobalActions(this, actionBars);
+					}
+				};
+			propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		}
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			DeploymentEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		try {
+			if (marker.getType().equals(EValidator.MARKER)) {
+				String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+				if (uriAttribute != null) {
+					URI uri = URI.createURI(uriAttribute);
+					EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+					if (eObject != null) {
+					  setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+					}
+				}
+			}
+		}
+		catch (CoreException exception) {
+			DeploymentEditorPlugin.INSTANCE.log(exception);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return DeploymentEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return DeploymentEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		if (propertySheetPage != null) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..f58e16787a26175127f8c45cd1605d4689567c3c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentEditorPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Deployment editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class DeploymentEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final DeploymentEditorPlugin INSTANCE = new DeploymentEditorPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeploymentEditorPlugin() {
+		super
+			(new ResourceLocator [] {
+				ApplicationlevelEditPlugin.INSTANCE,
+				CoreEditPlugin.INSTANCE,
+				IdentifierEditPlugin.INSTANCE,
+				ResourcelandscapeEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa4b8f289d1b409ce4d146e1d3542837a643c186
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.deployment.editor/src/edu/kit/ipd/descartes/mm/deployment/presentation/DeploymentModelWizard.java
@@ -0,0 +1,628 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.deployment.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.deployment.DeploymentFactory;
+import edu.kit.ipd.descartes.mm.deployment.DeploymentPackage;
+import edu.kit.ipd.descartes.mm.deployment.provider.DeploymentEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeploymentModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentPackage deploymentPackage = DeploymentPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentFactory deploymentFactory = deploymentPackage.getDeploymentFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeploymentModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(DeploymentEditorPlugin.INSTANCE.getImage("full/wizban/NewDeployment")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : deploymentPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)deploymentPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = deploymentFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							DeploymentEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), DeploymentEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			DeploymentEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class DeploymentModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public DeploymentModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(DeploymentEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class DeploymentModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public DeploymentModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(DeploymentEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(DeploymentEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return DeploymentEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				DeploymentEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(DeploymentEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new DeploymentModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_label"));
+		newFileCreationPage.setDescription(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_description"));
+		newFileCreationPage.setFileName(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new DeploymentModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(DeploymentEditorPlugin.INSTANCE.getString("_UI_DeploymentModelWizard_label"));
+		initialObjectCreationPage.setDescription(DeploymentEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..0b5b48c57a7c00da4a59e5273da2108e3cb39a50
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.resourcelandscape.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..c82bc3de11d74837205a6adec5c58a91841ff77e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.resourcelandscape.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.containerrepository.provider,
+ edu.kit.ipd.descartes.mm.resourceconfiguration.provider,
+ edu.kit.ipd.descartes.mm.resourcelandscape.provider,
+ edu.kit.ipd.descartes.mm.resourcetype.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6a6170e0da3df46b694951c50040942eb893f9dc
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_linkingResources_LinkingResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0dccd278a641469597ed65c547c9adb34f01fd1a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateActiveResourceSpecification_processingResourceSpecifications_ProcessingResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a47b32b7d9b44ea2d815901ae43becbeeedfca1e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_CompositeHardwareInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..970be05e66e8b9636471d3899a1b011e50df2011
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_ComputingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..88150e61379533ae117964afc9a5c0dfc09d3670
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_NetworkingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b41595970d5e745969978a2f93c4135768d101cb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateCompositeHardwareInfrastructure_contains_StorageInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif
new file mode 100644
index 0000000000000000000000000000000000000000..23bed02a9a48a1ba19bb37ad7d17735036f2444b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerRepository_templates_ContainerTemplate.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0e50474667d30c397798304802394a7fe89883b2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ActiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..281b5cfae116c915c886ad33ea2c472092ea1dbe
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_CustomConfigurationSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3ede289a77ed9c1c6dcb44960c17b09e08ceaa81
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_PassiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3d1deee6934348e3785d9fdfdf0d63111696a8c3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainerTemplate_templateConfig_ResourcePoolConfiguration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a57671831e45a1a8ca3240adbc3c4752ac221f14
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ActiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f61f1983011465fb694356efbdca7452b94f81ce
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_CustomConfigurationSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0289a2ad631d700d3f11b3c4abc39ea915a34ef8
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_PassiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..51394a3580c3e1cb2fa05f7c231e64e888736e87
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_configSpec_ResourcePoolConfiguration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bd2a29ab6f1c79d7d460bd7181ff2ef6f96feb91
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateContainer_contains_RuntimeEnvironment.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e2efc630b973c06f0fbcd03b3da861fe87e2f175
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_CompositeHardwareInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b89aadc0cde78d24f1477658f874a52b0703fbc5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_ComputingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..36bc72b827c8389d2c46ed7febfb8165c8e8bcb7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_NetworkingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f075771bb8f63e0bf102c50c229bcb01cb3b5129
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDataCenter_contains_StorageInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3a4e9adb3ba98f6a7091ae75fe2c4250d5e496f6
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateDistributedDataCenter_consistsOf_DataCenter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7a5b36204c5fbbd79eb11cbf23000acdab8a9688
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreatePassiveResourceSpecification_capacity_PassiveResourceCapacity.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c51ddff895148855cb0c606840648cb601980b0d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateProcessingResourceSpecification_nrOfParProcUnits_NumberOfParallelProcessingUnits.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8a87700f4c7cdeae66d88a9f69e203fe883a50f7
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_CommunicationLinkResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1bf6bbe1059a1bf35a4fda0b73d8437f6ba48e15
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_PassiveResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed645c34d5ac3d9bc121bc405626255ddec2f20d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/ctool16/CreateResourceTypeRepository_resourceTypes_ProcessingResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a9bc7514facefe049e8f5d98bb2e1e37f03c0c2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ActiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CommunicationLinkResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33854e98c25a13543eb9477dc67b0baf87fc81aa
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CompositeHardwareInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ComputingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerRepository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ContainerTemplate.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/CustomConfigurationSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DataCenter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/DistributedDataCenter.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4fb30e96873d2484faec9d508dcbdd69e73d82e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/LinkingResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NetworkingInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/NumberOfParallelProcessingUnits.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f8041d22553d3f326e3e82be501f2e9bac3794b0
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceCapacity.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7c2aaac84ee6ea15757df499505e9aa0de4288f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/PassiveResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceSpecification.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5915591825a5301b9f9a3d398baea497ef02311d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ProcessingResourceType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e4b530eca173b1070d5d876a0154bc370d8896b4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourcePoolConfiguration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/ResourceTypeRepository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/RuntimeEnvironment.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c00aedf4135a384d1a98a5344c27454f488cbe42
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/icons/full/obj16/StorageInfrastructure.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1f319b0e33c2550ef60aa6001a9cbdf75e6d03a8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.properties
@@ -0,0 +1,90 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Resourcelandscape Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_ComputingInfrastructure_type = Computing Infrastructure
+_UI_NetworkingInfrastructure_type = Networking Infrastructure
+_UI_StorageInfrastructure_type = Storage Infrastructure
+_UI_Container_type = Container
+_UI_RuntimeEnvironment_type = Runtime Environment
+_UI_DataCenter_type = Data Center
+_UI_DistributedDataCenter_type = Distributed Data Center
+_UI_CompositeHardwareInfrastructure_type = Composite Hardware Infrastructure
+_UI_AbstractHardwareInfrastructure_type = Abstract Hardware Infrastructure
+_UI_ConfigurationSpecification_type = Configuration Specification
+_UI_ProcessingResourceSpecification_type = Processing Resource Specification
+_UI_NumberOfParallelProcessingUnits_type = Number Of Parallel Processing Units
+_UI_LinkingResourceSpecification_type = Linking Resource Specification
+_UI_ActiveResourceSpecification_type = Active Resource Specification
+_UI_CustomConfigurationSpecification_type = Custom Configuration Specification
+_UI_PassiveResourceSpecification_type = Passive Resource Specification
+_UI_PassiveResourceCapacity_type = Passive Resource Capacity
+_UI_ContainerRepository_type = Container Repository
+_UI_ContainerTemplate_type = Container Template
+_UI_ResourceTypeRepository_type = Resource Type Repository
+_UI_ResourceType_type = Resource Type
+_UI_ProcessingResourceType_type = Processing Resource Type
+_UI_CommunicationLinkResourceType_type = Communication Link Resource Type
+_UI_PassiveResourceType_type = Passive Resource Type
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_Container_contains_feature = Contains
+_UI_Container_configSpec_feature = Config Spec
+_UI_Container_template_feature = Template
+_UI_RuntimeEnvironment_containedIn_feature = Contained In
+_UI_RuntimeEnvironment_ofClass_feature = Of Class
+_UI_DataCenter_belongsTo_feature = Belongs To
+_UI_DataCenter_contains_feature = Contains
+_UI_DistributedDataCenter_consistsOf_feature = Consists Of
+_UI_CompositeHardwareInfrastructure_contains_feature = Contains
+_UI_AbstractHardwareInfrastructure_partOf_feature = Part Of
+_UI_ProcessingResourceSpecification_schedulingPolicy_feature = Scheduling Policy
+_UI_ProcessingResourceSpecification_processingRate_feature = Processing Rate
+_UI_ProcessingResourceSpecification_activeResourceType_feature = Active Resource Type
+_UI_ProcessingResourceSpecification_parentResourceSpecification_feature = Parent Resource Specification
+_UI_ProcessingResourceSpecification_nrOfParProcUnits_feature = Nr Of Par Proc Units
+_UI_NumberOfParallelProcessingUnits_number_feature = Number
+_UI_NumberOfParallelProcessingUnits_processingResourceSpec_feature = Processing Resource Spec
+_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature = Connected Resource Specifications
+_UI_LinkingResourceSpecification_parentResourceConfiguration_feature = Parent Resource Configuration
+_UI_LinkingResourceSpecification_bandwidth_feature = Bandwidth
+_UI_LinkingResourceSpecification_communicationLinkResourceType_feature = Communication Link Resource Type
+_UI_ActiveResourceSpecification_processingResourceSpecifications_feature = Processing Resource Specifications
+_UI_ActiveResourceSpecification_linkingResources_feature = Linking Resources
+_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature = Non Functional Properties
+_UI_PassiveResourceSpecification_capacity_feature = Capacity
+_UI_PassiveResourceSpecification_passiveResourceType_feature = Passive Resource Type
+_UI_PassiveResourceCapacity_capacity_feature = Capacity
+_UI_ContainerRepository_templates_feature = Templates
+_UI_ContainerTemplate_templateConfig_feature = Template Config
+_UI_ResourceTypeRepository_resourceTypes_feature = Resource Types
+_UI_ResourceType_parentResourceRepository_feature = Parent Resource Repository
+_UI_Unknown_feature = Unspecified
+
+_UI_SchedulingPolicy_DELAY_literal = DELAY
+_UI_SchedulingPolicy_FCFS_literal = FCFS
+_UI_SchedulingPolicy_PROCESSOR_SHARING_literal = PROCESSOR_SHARING
+_UI_SchedulingPolicy_RANDOM_literal = RANDOM
+_UI_SchedulingPolicy_NA_literal = NA
+_UI_RuntimeEnvironmentClasses_HYPERVISOR_literal = HYPERVISOR
+_UI_RuntimeEnvironmentClasses_OPERATING_SYSTEM_literal = OPERATING SYSTEM
+_UI_RuntimeEnvironmentClasses_OS_VM_literal = OS VM
+_UI_RuntimeEnvironmentClasses_PROCESS_VM_literal = PROCESS VM
+_UI_RuntimeEnvironmentClasses_MIDDLEWARE_literal = MIDDLEWARE
+_UI_RuntimeEnvironmentClasses_OTHER_literal = OTHER
+_UI_ContainerTemplate_referringContainers_feature = Referring Containers
+_UI_ResourcePoolConfiguration_type = Resource Pool Configuration
+_UI_ResourcePoolConfiguration_resourcePoolConfig_feature = Resource Pool Config
+_UI_ContainerTemplate_runningOn_feature = Running On
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4523ae0015b38ff9bc4510bf4889ef6259b64bbd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/plugin.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/resourcelandscape/0.1"
+            class="edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/resourceconfiguration/0.1"
+            class="edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/containerrepository/0.1"
+            class="edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/resourcetype/0.1"
+            class="edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52fdb3e8b3a2cae7d086662eb09327565f37cdf7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.resourcelandscape.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9258a8df6b0f1ea8a78a20b607715d14d09e403
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerRepositoryItemProvider.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository;
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryFactory;
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerRepositoryItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ContainerRepositoryItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ContainerrepositoryPackage.Literals.CONTAINER_REPOSITORY__TEMPLATES);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns ContainerRepository.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ContainerRepository"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ContainerRepository)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ContainerRepository_type") :
+            getString("_UI_ContainerRepository_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ContainerRepository.class)) {
+            case ContainerrepositoryPackage.CONTAINER_REPOSITORY__TEMPLATES:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ContainerrepositoryPackage.Literals.CONTAINER_REPOSITORY__TEMPLATES,
+                 ContainerrepositoryFactory.eINSTANCE.createContainerTemplate()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..37910aec28bdf1804a890d71c4326148664643fc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerTemplateItemProvider.java
@@ -0,0 +1,232 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate;
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerTemplateItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ContainerTemplateItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addReferringContainersPropertyDescriptor(object);
+            addRunningOnPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Referring Containers feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addReferringContainersPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ContainerTemplate_referringContainers_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ContainerTemplate_referringContainers_feature", "_UI_ContainerTemplate_type"),
+                 ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__REFERRING_CONTAINERS,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Running On feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRunningOnPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ContainerTemplate_runningOn_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ContainerTemplate_runningOn_feature", "_UI_ContainerTemplate_type"),
+                 ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__RUNNING_ON,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns ContainerTemplate.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ContainerTemplate"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ContainerTemplate)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ContainerTemplate_type") :
+            getString("_UI_ContainerTemplate_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ContainerTemplate.class)) {
+            case ContainerrepositoryPackage.CONTAINER_TEMPLATE__TEMPLATE_CONFIG:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG,
+                 ResourceconfigurationFactory.eINSTANCE.createActiveResourceSpecification()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG,
+                 ResourceconfigurationFactory.eINSTANCE.createCustomConfigurationSpecification()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ContainerrepositoryPackage.Literals.CONTAINER_TEMPLATE__TEMPLATE_CONFIG,
+                 ResourceconfigurationFactory.eINSTANCE.createPassiveResourceSpecification()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..4571f6ed72c7b0209ef483105cb744d836c51fdd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/containerrepository/provider/ContainerrepositoryItemProviderAdapterFactory.java
@@ -0,0 +1,224 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.provider;
+
+import edu.kit.ipd.descartes.mm.containerrepository.util.ContainerrepositoryAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerrepositoryItemProviderAdapterFactory extends ContainerrepositoryAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ContainerrepositoryItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ContainerRepositoryItemProvider containerRepositoryItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerRepository}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createContainerRepositoryAdapter() {
+        if (containerRepositoryItemProvider == null) {
+            containerRepositoryItemProvider = new ContainerRepositoryItemProvider(this);
+        }
+
+        return containerRepositoryItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ContainerTemplateItemProvider containerTemplateItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.containerrepository.ContainerTemplate}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createContainerTemplateAdapter() {
+        if (containerTemplateItemProvider == null) {
+            containerTemplateItemProvider = new ContainerTemplateItemProvider(this);
+        }
+
+        return containerTemplateItemProvider;
+    }
+
+	/**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+	/**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+	/**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+	/**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+	/**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+	/**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+	/**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void dispose() {
+        if (containerRepositoryItemProvider != null) containerRepositoryItemProvider.dispose();
+        if (containerTemplateItemProvider != null) containerTemplateItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d9e9057aa81914511a31a288d676a6ebc8febb2a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ActiveResourceSpecificationItemProvider.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ActiveResourceSpecificationItemProvider
+	extends ConfigurationSpecificationItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ActiveResourceSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS);
+            childrenFeatures.add(ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns ActiveResourceSpecification.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ActiveResourceSpecification"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ActiveResourceSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ActiveResourceSpecification_type") :
+            getString("_UI_ActiveResourceSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ActiveResourceSpecification.class)) {
+            case ResourceconfigurationPackage.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS:
+            case ResourceconfigurationPackage.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__PROCESSING_RESOURCE_SPECIFICATIONS,
+                 ResourceconfigurationFactory.eINSTANCE.createProcessingResourceSpecification()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourceconfigurationPackage.Literals.ACTIVE_RESOURCE_SPECIFICATION__LINKING_RESOURCES,
+                 ResourceconfigurationFactory.eINSTANCE.createLinkingResourceSpecification()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..54ea1a02998266ad03f9cb1e910c1bda43d9145c
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ConfigurationSpecificationItemProvider.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ConfigurationSpecification;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ConfigurationSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ConfigurationSpecificationItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ConfigurationSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ConfigurationSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ConfigurationSpecification_type") :
+            getString("_UI_ConfigurationSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..566f7bd1502efe9b45a56b37dd3729a7a3355ec2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/CustomConfigurationSpecificationItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomConfigurationSpecificationItemProvider
+	extends ConfigurationSpecificationItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public CustomConfigurationSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addNonFunctionalPropertiesPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Non Functional Properties feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addNonFunctionalPropertiesPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_CustomConfigurationSpecification_nonFunctionalProperties_feature", "_UI_CustomConfigurationSpecification_type"),
+                 ResourceconfigurationPackage.Literals.CUSTOM_CONFIGURATION_SPECIFICATION__NON_FUNCTIONAL_PROPERTIES,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This returns CustomConfigurationSpecification.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomConfigurationSpecification"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((CustomConfigurationSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_CustomConfigurationSpecification_type") :
+            getString("_UI_CustomConfigurationSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3127cc087d2ca6b87c3c3846494fa0ba1d78987
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/LinkingResourceSpecificationItemProvider.java
@@ -0,0 +1,208 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinkingResourceSpecificationItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public LinkingResourceSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addConnectedResourceSpecificationsPropertyDescriptor(object);
+            addBandwidthPropertyDescriptor(object);
+            addCommunicationLinkResourceTypePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Connected Resource Specifications feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addConnectedResourceSpecificationsPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_connectedResourceSpecifications_feature", "_UI_LinkingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__CONNECTED_RESOURCE_SPECIFICATIONS,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Bandwidth feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addBandwidthPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_LinkingResourceSpecification_bandwidth_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_bandwidth_feature", "_UI_LinkingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__BANDWIDTH,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Communication Link Resource Type feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addCommunicationLinkResourceTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_LinkingResourceSpecification_communicationLinkResourceType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_LinkingResourceSpecification_communicationLinkResourceType_feature", "_UI_LinkingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.LINKING_RESOURCE_SPECIFICATION__COMMUNICATION_LINK_RESOURCE_TYPE,
+                 true,
+                 false,
+                 false,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This returns LinkingResourceSpecification.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/LinkingResourceSpecification"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((LinkingResourceSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_LinkingResourceSpecification_type") :
+            getString("_UI_LinkingResourceSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(LinkingResourceSpecification.class)) {
+            case ResourceconfigurationPackage.LINKING_RESOURCE_SPECIFICATION__BANDWIDTH:
+            case ResourceconfigurationPackage.LINKING_RESOURCE_SPECIFICATION__COMMUNICATION_LINK_RESOURCE_TYPE:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccad46cd6767004b1b1604670f1682928ec21460
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/NumberOfParallelProcessingUnitsItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NumberOfParallelProcessingUnitsItemProvider
+	extends AdaptableEntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public NumberOfParallelProcessingUnitsItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addNumberPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Number feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addNumberPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_NumberOfParallelProcessingUnits_number_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_NumberOfParallelProcessingUnits_number_feature", "_UI_NumberOfParallelProcessingUnits_type"),
+                 ResourceconfigurationPackage.Literals.NUMBER_OF_PARALLEL_PROCESSING_UNITS__NUMBER,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This returns NumberOfParallelProcessingUnits.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/NumberOfParallelProcessingUnits"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((NumberOfParallelProcessingUnits)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_NumberOfParallelProcessingUnits_type") :
+            getString("_UI_NumberOfParallelProcessingUnits_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(NumberOfParallelProcessingUnits.class)) {
+            case ResourceconfigurationPackage.NUMBER_OF_PARALLEL_PROCESSING_UNITS__NUMBER:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e07a311a36802874c91b90baa298d33d79ad5fe0
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceCapacityItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.AdaptableEntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PassiveResourceCapacityItemProvider
+	extends AdaptableEntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public PassiveResourceCapacityItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addCapacityPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Capacity feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addCapacityPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_PassiveResourceCapacity_capacity_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_PassiveResourceCapacity_capacity_feature", "_UI_PassiveResourceCapacity_type"),
+                 ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_CAPACITY__CAPACITY,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This returns PassiveResourceCapacity.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceCapacity"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((PassiveResourceCapacity)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_PassiveResourceCapacity_type") :
+            getString("_UI_PassiveResourceCapacity_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(PassiveResourceCapacity.class)) {
+            case ResourceconfigurationPackage.PASSIVE_RESOURCE_CAPACITY__CAPACITY:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f647f4ef575f1caa80a3f016c76e17daec428f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/PassiveResourceSpecificationItemProvider.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PassiveResourceSpecificationItemProvider
+	extends ConfigurationSpecificationItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public PassiveResourceSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addPassiveResourceTypePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Passive Resource Type feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addPassiveResourceTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_PassiveResourceSpecification_passiveResourceType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_PassiveResourceSpecification_passiveResourceType_feature", "_UI_PassiveResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__PASSIVE_RESOURCE_TYPE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns PassiveResourceSpecification.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceSpecification"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((PassiveResourceSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_PassiveResourceSpecification_type") :
+            getString("_UI_PassiveResourceSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(PassiveResourceSpecification.class)) {
+            case ResourceconfigurationPackage.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourceconfigurationPackage.Literals.PASSIVE_RESOURCE_SPECIFICATION__CAPACITY,
+                 ResourceconfigurationFactory.eINSTANCE.createPassiveResourceCapacity()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..69750a04d71fd9f17f99a24c3799e5d3b20150e1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ProcessingResourceSpecificationItemProvider.java
@@ -0,0 +1,273 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProcessingResourceSpecificationItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ProcessingResourceSpecificationItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addSchedulingPolicyPropertyDescriptor(object);
+            addProcessingRatePropertyDescriptor(object);
+            addActiveResourceTypePropertyDescriptor(object);
+            addParentResourceSpecificationPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Scheduling Policy feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addSchedulingPolicyPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ProcessingResourceSpecification_schedulingPolicy_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_schedulingPolicy_feature", "_UI_ProcessingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__SCHEDULING_POLICY,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Processing Rate feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addProcessingRatePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ProcessingResourceSpecification_processingRate_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_processingRate_feature", "_UI_ProcessingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__PROCESSING_RATE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Active Resource Type feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addActiveResourceTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ProcessingResourceSpecification_activeResourceType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_activeResourceType_feature", "_UI_ProcessingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__ACTIVE_RESOURCE_TYPE,
+                 true,
+                 false,
+                 false,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This adds a property descriptor for the Parent Resource Specification feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addParentResourceSpecificationPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_ProcessingResourceSpecification_parentResourceSpecification_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_ProcessingResourceSpecification_parentResourceSpecification_feature", "_UI_ProcessingResourceSpecification_type"),
+                 ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__PARENT_RESOURCE_SPECIFICATION,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns ProcessingResourceSpecification.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ProcessingResourceSpecification"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ProcessingResourceSpecification)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ProcessingResourceSpecification_type") :
+            getString("_UI_ProcessingResourceSpecification_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ProcessingResourceSpecification.class)) {
+            case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__SCHEDULING_POLICY:
+            case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__PROCESSING_RATE:
+            case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__ACTIVE_RESOURCE_TYPE:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case ResourceconfigurationPackage.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourceconfigurationPackage.Literals.PROCESSING_RESOURCE_SPECIFICATION__NR_OF_PAR_PROC_UNITS,
+                 ResourceconfigurationFactory.eINSTANCE.createNumberOfParallelProcessingUnits()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..569a5b4121e83ed69cf3b7a6230a71a5802ea48f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourceconfiguration/provider/ResourceconfigurationItemProviderAdapterFactory.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.provider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.util.ResourceconfigurationAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceconfigurationItemProviderAdapterFactory extends ResourceconfigurationAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourceconfigurationItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ProcessingResourceSpecificationItemProvider processingResourceSpecificationItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ProcessingResourceSpecification}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createProcessingResourceSpecificationAdapter() {
+        if (processingResourceSpecificationItemProvider == null) {
+            processingResourceSpecificationItemProvider = new ProcessingResourceSpecificationItemProvider(this);
+        }
+
+        return processingResourceSpecificationItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected NumberOfParallelProcessingUnitsItemProvider numberOfParallelProcessingUnitsItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.NumberOfParallelProcessingUnits}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createNumberOfParallelProcessingUnitsAdapter() {
+        if (numberOfParallelProcessingUnitsItemProvider == null) {
+            numberOfParallelProcessingUnitsItemProvider = new NumberOfParallelProcessingUnitsItemProvider(this);
+        }
+
+        return numberOfParallelProcessingUnitsItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected LinkingResourceSpecificationItemProvider linkingResourceSpecificationItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.LinkingResourceSpecification}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createLinkingResourceSpecificationAdapter() {
+        if (linkingResourceSpecificationItemProvider == null) {
+            linkingResourceSpecificationItemProvider = new LinkingResourceSpecificationItemProvider(this);
+        }
+
+        return linkingResourceSpecificationItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ActiveResourceSpecificationItemProvider activeResourceSpecificationItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.ActiveResourceSpecification}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createActiveResourceSpecificationAdapter() {
+        if (activeResourceSpecificationItemProvider == null) {
+            activeResourceSpecificationItemProvider = new ActiveResourceSpecificationItemProvider(this);
+        }
+
+        return activeResourceSpecificationItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected CustomConfigurationSpecificationItemProvider customConfigurationSpecificationItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.CustomConfigurationSpecification}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createCustomConfigurationSpecificationAdapter() {
+        if (customConfigurationSpecificationItemProvider == null) {
+            customConfigurationSpecificationItemProvider = new CustomConfigurationSpecificationItemProvider(this);
+        }
+
+        return customConfigurationSpecificationItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected PassiveResourceSpecificationItemProvider passiveResourceSpecificationItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceSpecification}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createPassiveResourceSpecificationAdapter() {
+        if (passiveResourceSpecificationItemProvider == null) {
+            passiveResourceSpecificationItemProvider = new PassiveResourceSpecificationItemProvider(this);
+        }
+
+        return passiveResourceSpecificationItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected PassiveResourceCapacityItemProvider passiveResourceCapacityItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourceconfiguration.PassiveResourceCapacity}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createPassiveResourceCapacityAdapter() {
+        if (passiveResourceCapacityItemProvider == null) {
+            passiveResourceCapacityItemProvider = new PassiveResourceCapacityItemProvider(this);
+        }
+
+        return passiveResourceCapacityItemProvider;
+    }
+
+	/**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+	/**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+	/**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+	/**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+	/**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+	/**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+	/**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void dispose() {
+        if (processingResourceSpecificationItemProvider != null) processingResourceSpecificationItemProvider.dispose();
+        if (numberOfParallelProcessingUnitsItemProvider != null) numberOfParallelProcessingUnitsItemProvider.dispose();
+        if (linkingResourceSpecificationItemProvider != null) linkingResourceSpecificationItemProvider.dispose();
+        if (activeResourceSpecificationItemProvider != null) activeResourceSpecificationItemProvider.dispose();
+        if (customConfigurationSpecificationItemProvider != null) customConfigurationSpecificationItemProvider.dispose();
+        if (passiveResourceSpecificationItemProvider != null) passiveResourceSpecificationItemProvider.dispose();
+        if (passiveResourceCapacityItemProvider != null) passiveResourceCapacityItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..68b42c162b238bd5f973276e7e538c21449e0ea7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/AbstractHardwareInfrastructureItemProvider.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+import edu.kit.ipd.descartes.mm.resourcelandscape.AbstractHardwareInfrastructure;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.AbstractHardwareInfrastructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractHardwareInfrastructureItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public AbstractHardwareInfrastructureItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((AbstractHardwareInfrastructure)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_AbstractHardwareInfrastructure_type") :
+            getString("_UI_AbstractHardwareInfrastructure_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..22f4ec2bd62e2c264a890a31ecbf4adcd6c41b4b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/CompositeHardwareInfrastructureItemProvider.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompositeHardwareInfrastructureItemProvider
+	extends AbstractHardwareInfrastructureItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public CompositeHardwareInfrastructureItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns CompositeHardwareInfrastructure.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/CompositeHardwareInfrastructure"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((CompositeHardwareInfrastructure)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_CompositeHardwareInfrastructure_type") :
+            getString("_UI_CompositeHardwareInfrastructure_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(CompositeHardwareInfrastructure.class)) {
+            case ResourcelandscapePackage.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createComputingInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createNetworkingInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createStorageInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.COMPOSITE_HARDWARE_INFRASTRUCTURE__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createCompositeHardwareInfrastructure()));
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f25dd86f5ccf22827953dd80e1927392172b761d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ComputingInfrastructureItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComputingInfrastructureItemProvider
+	extends ContainerItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ComputingInfrastructureItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns ComputingInfrastructure.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ComputingInfrastructure"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ComputingInfrastructure)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ComputingInfrastructure_type") :
+            getString("_UI_ComputingInfrastructure_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b03239e7806703d0d616cb0f4194ea791b6ab4cd
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ContainerItemProvider.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.Container;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.Container} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ContainerItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addTemplatePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Template feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addTemplatePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Container_template_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Container_template_feature", "_UI_Container_type"),
+                 ResourcelandscapePackage.Literals.CONTAINER__TEMPLATE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourcelandscapePackage.Literals.CONTAINER__CONTAINS);
+            childrenFeatures.add(ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((Container)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Container_type") :
+            getString("_UI_Container_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Container.class)) {
+            case ResourcelandscapePackage.CONTAINER__CONTAINS:
+            case ResourcelandscapePackage.CONTAINER__CONFIG_SPEC:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.CONTAINER__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createRuntimeEnvironment()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC,
+                 ResourceconfigurationFactory.eINSTANCE.createActiveResourceSpecification()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC,
+                 ResourceconfigurationFactory.eINSTANCE.createCustomConfigurationSpecification()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.CONTAINER__CONFIG_SPEC,
+                 ResourceconfigurationFactory.eINSTANCE.createPassiveResourceSpecification()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..45d07743a3a578e33f8845a7156a7d04309e4ddb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DataCenterItemProvider.java
@@ -0,0 +1,187 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DataCenterItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public DataCenterItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns DataCenter.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/DataCenter"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((DataCenter)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_DataCenter_type") :
+            getString("_UI_DataCenter_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(DataCenter.class)) {
+            case ResourcelandscapePackage.DATA_CENTER__CONTAINS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createComputingInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createNetworkingInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createStorageInfrastructure()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.DATA_CENTER__CONTAINS,
+                 ResourcelandscapeFactory.eINSTANCE.createCompositeHardwareInfrastructure()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..53e74acfbdc68985e86168b7376186fa428ae848
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/DistributedDataCenterItemProvider.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DistributedDataCenterItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public DistributedDataCenterItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourcelandscapePackage.Literals.DISTRIBUTED_DATA_CENTER__CONSISTS_OF);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns DistributedDataCenter.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/DistributedDataCenter"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((DistributedDataCenter)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_DistributedDataCenter_type") :
+            getString("_UI_DistributedDataCenter_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(DistributedDataCenter.class)) {
+            case ResourcelandscapePackage.DISTRIBUTED_DATA_CENTER__CONSISTS_OF:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcelandscapePackage.Literals.DISTRIBUTED_DATA_CENTER__CONSISTS_OF,
+                 ResourcelandscapeFactory.eINSTANCE.createDataCenter()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb5c0644b0b0fc87741711846541a27e1fd5105a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/NetworkingInfrastructureItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NetworkingInfrastructureItemProvider
+	extends ContainerItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public NetworkingInfrastructureItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns NetworkingInfrastructure.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/NetworkingInfrastructure"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((NetworkingInfrastructure)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_NetworkingInfrastructure_type") :
+            getString("_UI_NetworkingInfrastructure_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..15cf54a08f540dbcf14239cd6746a7ee25197192
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeEditPlugin.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Resourcelandscape edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ResourcelandscapeEditPlugin extends EMFPlugin {
+	/**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final ResourcelandscapeEditPlugin INSTANCE = new ResourcelandscapeEditPlugin();
+
+	/**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	private static Implementation plugin;
+
+	/**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourcelandscapeEditPlugin() {
+        super
+          (new ResourceLocator [] {
+             CoreEditPlugin.INSTANCE,
+             IdentifierEditPlugin.INSTANCE,
+           });
+    }
+
+	/**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+
+	/**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+	public static Implementation getPlugin() {
+        return plugin;
+    }
+
+	/**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static class Implementation extends EclipsePlugin {
+		/**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1adfd9f93818802e4a5e63e3851cd27a3cd70225
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/ResourcelandscapeItemProviderAdapterFactory.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.util.ResourcelandscapeAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcelandscapeItemProviderAdapterFactory extends ResourcelandscapeAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourcelandscapeItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComputingInfrastructureItemProvider computingInfrastructureItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createComputingInfrastructureAdapter() {
+        if (computingInfrastructureItemProvider == null) {
+            computingInfrastructureItemProvider = new ComputingInfrastructureItemProvider(this);
+        }
+
+        return computingInfrastructureItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected NetworkingInfrastructureItemProvider networkingInfrastructureItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.NetworkingInfrastructure}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createNetworkingInfrastructureAdapter() {
+        if (networkingInfrastructureItemProvider == null) {
+            networkingInfrastructureItemProvider = new NetworkingInfrastructureItemProvider(this);
+        }
+
+        return networkingInfrastructureItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected StorageInfrastructureItemProvider storageInfrastructureItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createStorageInfrastructureAdapter() {
+        if (storageInfrastructureItemProvider == null) {
+            storageInfrastructureItemProvider = new StorageInfrastructureItemProvider(this);
+        }
+
+        return storageInfrastructureItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected RuntimeEnvironmentItemProvider runtimeEnvironmentItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createRuntimeEnvironmentAdapter() {
+        if (runtimeEnvironmentItemProvider == null) {
+            runtimeEnvironmentItemProvider = new RuntimeEnvironmentItemProvider(this);
+        }
+
+        return runtimeEnvironmentItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected DataCenterItemProvider dataCenterItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createDataCenterAdapter() {
+        if (dataCenterItemProvider == null) {
+            dataCenterItemProvider = new DataCenterItemProvider(this);
+        }
+
+        return dataCenterItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected DistributedDataCenterItemProvider distributedDataCenterItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createDistributedDataCenterAdapter() {
+        if (distributedDataCenterItemProvider == null) {
+            distributedDataCenterItemProvider = new DistributedDataCenterItemProvider(this);
+        }
+
+        return distributedDataCenterItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected CompositeHardwareInfrastructureItemProvider compositeHardwareInfrastructureItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.CompositeHardwareInfrastructure}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createCompositeHardwareInfrastructureAdapter() {
+        if (compositeHardwareInfrastructureItemProvider == null) {
+            compositeHardwareInfrastructureItemProvider = new CompositeHardwareInfrastructureItemProvider(this);
+        }
+
+        return compositeHardwareInfrastructureItemProvider;
+    }
+
+	/**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+	/**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+	/**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+	/**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+	/**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+	/**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+	/**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void dispose() {
+        if (computingInfrastructureItemProvider != null) computingInfrastructureItemProvider.dispose();
+        if (networkingInfrastructureItemProvider != null) networkingInfrastructureItemProvider.dispose();
+        if (storageInfrastructureItemProvider != null) storageInfrastructureItemProvider.dispose();
+        if (runtimeEnvironmentItemProvider != null) runtimeEnvironmentItemProvider.dispose();
+        if (dataCenterItemProvider != null) dataCenterItemProvider.dispose();
+        if (distributedDataCenterItemProvider != null) distributedDataCenterItemProvider.dispose();
+        if (compositeHardwareInfrastructureItemProvider != null) compositeHardwareInfrastructureItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6fdb007d9048c9cfb614293e9c7502067ebaec88
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/RuntimeEnvironmentItemProvider.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+import edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RuntimeEnvironmentItemProvider
+	extends ContainerItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public RuntimeEnvironmentItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addOfClassPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This adds a property descriptor for the Of Class feature.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void addOfClassPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_RuntimeEnvironment_ofClass_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_RuntimeEnvironment_ofClass_feature", "_UI_RuntimeEnvironment_type"),
+                 ResourcelandscapePackage.Literals.RUNTIME_ENVIRONMENT__OF_CLASS,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+	/**
+     * This returns RuntimeEnvironment.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/RuntimeEnvironment"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((RuntimeEnvironment)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_RuntimeEnvironment_type") :
+            getString("_UI_RuntimeEnvironment_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(RuntimeEnvironment.class)) {
+            case ResourcelandscapePackage.RUNTIME_ENVIRONMENT__OF_CLASS:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7c1ff861eac63aa16d30158b81e66233f45a0be2
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcelandscape/provider/StorageInfrastructureItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcelandscape.StorageInfrastructure} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StorageInfrastructureItemProvider
+	extends ContainerItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public StorageInfrastructureItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns StorageInfrastructure.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/StorageInfrastructure"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((StorageInfrastructure)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_StorageInfrastructure_type") :
+            getString("_UI_StorageInfrastructure_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6699a456e812d718b1962254df41ca5e237b17f6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/CommunicationLinkResourceTypeItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommunicationLinkResourceTypeItemProvider
+	extends ProcessingResourceTypeItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public CommunicationLinkResourceTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns CommunicationLinkResourceType.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/CommunicationLinkResourceType"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((CommunicationLinkResourceType)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_CommunicationLinkResourceType_type") :
+            getString("_UI_CommunicationLinkResourceType_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ef877ea8141272ac4967c253b9fc7511208a89b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/PassiveResourceTypeItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PassiveResourceTypeItemProvider
+	extends ResourceTypeItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public PassiveResourceTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns PassiveResourceType.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/PassiveResourceType"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((PassiveResourceType)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_PassiveResourceType_type") :
+            getString("_UI_PassiveResourceType_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a51cfb3b46adcc49638c6910aebe59b65cb2c91a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ProcessingResourceTypeItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProcessingResourceTypeItemProvider
+	extends ResourceTypeItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ProcessingResourceTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns ProcessingResourceType.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ProcessingResourceType"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ProcessingResourceType)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ProcessingResourceType_type") :
+            getString("_UI_ProcessingResourceType_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..48abfa8e0c8342eb6f11541b6a1476c2fcba23a3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeItemProvider.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcetype.ResourceType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceTypeItemProvider
+	extends EntityItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourceTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        String label = ((ResourceType)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_ResourceType_type") :
+            getString("_UI_ResourceType_type") + " " + label;
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..89dae178076fe2536f44114f5a774e947083238a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourceTypeRepositoryItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository;
+import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypeFactory;
+import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceTypeRepositoryItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourceTypeRepositoryItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+	/**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+	/**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES);
+        }
+        return childrenFeatures;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+	/**
+     * This returns ResourceTypeRepository.gif.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/ResourceTypeRepository"));
+    }
+
+	/**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public String getText(Object object) {
+        return getString("_UI_ResourceTypeRepository_type");
+    }
+
+	/**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(ResourceTypeRepository.class)) {
+            case ResourcetypePackage.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+	/**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES,
+                 ResourcetypeFactory.eINSTANCE.createProcessingResourceType()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES,
+                 ResourcetypeFactory.eINSTANCE.createCommunicationLinkResourceType()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (ResourcetypePackage.Literals.RESOURCE_TYPE_REPOSITORY__RESOURCE_TYPES,
+                 ResourcetypeFactory.eINSTANCE.createPassiveResourceType()));
+    }
+
+	/**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public ResourceLocator getResourceLocator() {
+        return ResourcelandscapeEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..efce4050b1f8fa53e6eb3f21b5c8049db46674ea
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.edit/src/edu/kit/ipd/descartes/mm/resourcetype/provider/ResourcetypeItemProviderAdapterFactory.java
@@ -0,0 +1,258 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.provider;
+
+import edu.kit.ipd.descartes.mm.resourcetype.util.ResourcetypeAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcetypeItemProviderAdapterFactory extends ResourcetypeAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier {
+	/**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourcetypeItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourceTypeRepositoryItemProvider resourceTypeRepositoryItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ResourceTypeRepository}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createResourceTypeRepositoryAdapter() {
+        if (resourceTypeRepositoryItemProvider == null) {
+            resourceTypeRepositoryItemProvider = new ResourceTypeRepositoryItemProvider(this);
+        }
+
+        return resourceTypeRepositoryItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ProcessingResourceTypeItemProvider processingResourceTypeItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.ProcessingResourceType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createProcessingResourceTypeAdapter() {
+        if (processingResourceTypeItemProvider == null) {
+            processingResourceTypeItemProvider = new ProcessingResourceTypeItemProvider(this);
+        }
+
+        return processingResourceTypeItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected CommunicationLinkResourceTypeItemProvider communicationLinkResourceTypeItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.CommunicationLinkResourceType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createCommunicationLinkResourceTypeAdapter() {
+        if (communicationLinkResourceTypeItemProvider == null) {
+            communicationLinkResourceTypeItemProvider = new CommunicationLinkResourceTypeItemProvider(this);
+        }
+
+        return communicationLinkResourceTypeItemProvider;
+    }
+
+	/**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType} instances.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected PassiveResourceTypeItemProvider passiveResourceTypeItemProvider;
+
+	/**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.resourcetype.PassiveResourceType}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter createPassiveResourceTypeAdapter() {
+        if (passiveResourceTypeItemProvider == null) {
+            passiveResourceTypeItemProvider = new PassiveResourceTypeItemProvider(this);
+        }
+
+        return passiveResourceTypeItemProvider;
+    }
+
+	/**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+	/**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+	/**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+	/**
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+	/**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+	/**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+	/**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..3ca6ecbad648c8b761d96e9993aee84c93d4cfa4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.resourcelandscape.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b3044e7fc4fb326f4721ea452888ee08c0c64
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.resourcelandscape.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.containerrepository.presentation,
+ edu.kit.ipd.descartes.mm.resourceconfiguration.presentation,
+ edu.kit.ipd.descartes.mm.resourcelandscape.presentation,
+ edu.kit.ipd.descartes.mm.resourcetype.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b3ad8009f0caae5b5b5a4991df65394f2887c97
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ContainerrepositoryModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a99fd8140c4a8cc080010639813e239b20a2c77c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourceconfigurationModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..366f9ff33929abad861653d50512f3d93bac89ca
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcelandscapeModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5d3db6b0059d777b73ac5f5f94c86c442b813ed4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/obj16/ResourcetypeModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33f212f1c1479ee58d4886f99d9a3add393e8ed1
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewContainerrepository.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..897c9baa83caf1d5ae527be9f2bcf3002bbc7931
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourceconfiguration.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e85f1da21d92ca93e4dcf62ba760305d61d146a3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcelandscape.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif
new file mode 100644
index 0000000000000000000000000000000000000000..54a4d3bfcee04f68a4c9f191918b9df0dc0f669e
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/icons/full/wizban/NewResourcetype.gif differ
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..008e5d5ac480cf6bbad7b51ec85b42c9d5986708
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.properties
@@ -0,0 +1,96 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Resourcelandscape Editor
+providerName = www.example.org
+
+_UI_ResourcelandscapeEditor_menu = &Resource Landscape Editor
+_UI_ResourceconfigurationEditor_menu = &Resource Configuration Editor
+_UI_ContainerrepositoryEditor_menu = &Container Repository Editor
+_UI_RuntimeenvironmentclassesEditor_menu = &Runtime Environment Classes Editor
+_UI_ParameterEditor_menu = &Parameter Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_resourcelandscape_category = Resource Landscape
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_ResourcelandscapeModelWizard_label = Resource Landscape Model
+_UI_ResourcelandscapeModelWizard_description = Create a new Resource Landscape model
+
+_UI_ResourcelandscapeEditor_label = Resource Landscape Model Editor
+
+_UI_ResourcelandscapeEditorFilenameDefaultBase = My
+_UI_ResourcelandscapeEditorFilenameExtensions = resourcelandscape
+
+_UI_ResourceconfigurationModelWizard_label = Resource Configuration Model
+_UI_ResourceconfigurationModelWizard_description = Create a new Resource Configuration model
+
+_UI_ResourceconfigurationEditor_label = Resource Configuration Model Editor
+
+_UI_ResourceconfigurationEditorFilenameDefaultBase = My
+_UI_ResourceconfigurationEditorFilenameExtensions = resourceconfiguration
+
+_UI_ContainerrepositoryModelWizard_label = Container Repository Model
+_UI_ContainerrepositoryModelWizard_description = Create a new Container Repository model
+
+_UI_ContainerrepositoryEditor_label = Container Repository Model Editor
+
+_UI_ContainerrepositoryEditorFilenameDefaultBase = My
+_UI_ContainerrepositoryEditorFilenameExtensions = containerrepository
+
+_UI_RuntimeenvironmentclassesModelWizard_label = Runtime Environment Classes Model
+_UI_RuntimeenvironmentclassesModelWizard_description = Create a new Runtime Environment Classes model
+
+_UI_RuntimeenvironmentclassesEditor_label = Runtime Environment Classes Model Editor
+
+_UI_RuntimeenvironmentclassesEditorFilenameDefaultBase = My
+_UI_RuntimeenvironmentclassesEditorFilenameExtensions = runtimeenvironmentclasses
+
+_UI_ParameterModelWizard_label = Parameter Model
+_UI_ParameterModelWizard_description = Create a new Parameter model
+
+_UI_ParameterEditor_label = Parameter Model Editor
+
+_UI_ParameterEditorFilenameDefaultBase = My
+_UI_ParameterEditorFilenameExtensions = parameter
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
+_UI_ResourcetypeEditor_menu = &Resource Type Editor
+_UI_ResourcetypeModelWizard_label = Resource Type Model
+_UI_ResourcetypeModelWizard_description = Create a new Resource Type model
+_UI_ResourcetypeEditor_label = Resource Type Model Editor
+_UI_ResourcetypeEditorFilenameDefaultBase = My
+_UI_ResourcetypeEditorFilenameExtensions = resourcetype
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1bf0f47760806f57fc7ecc618f2ebe2f64149f5e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/plugin.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.resourcelandscape.category"
+            name="%_UI_Wizard_resourcelandscape_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeModelWizardID"
+            name="%_UI_ResourcelandscapeModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category"
+            icon="icons/full/obj16/ResourcelandscapeModelFile.gif">
+         <description>%_UI_ResourcelandscapeModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorID"
+            name="%_UI_ResourcelandscapeEditor_label"
+            icon="icons/full/obj16/ResourcelandscapeModelFile.gif"
+            extensions="resourcelandscape"
+            class="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeActionBarContributor">
+      </editor>
+   </extension>
+
+<!--   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.resourcelandscape.category"
+            name="%_UI_Wizard_resourcelandscape_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationModelWizardID"
+            name="%_UI_ResourceconfigurationModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category"
+            icon="icons/full/obj16/ResourceconfigurationModelFile.gif">
+         <description>%_UI_ResourceconfigurationModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>-->
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationEditorID"
+            name="%_UI_ResourceconfigurationEditor_label"
+            icon="icons/full/obj16/ResourceconfigurationModelFile.gif"
+            extensions="resourceconfiguration"
+            class="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.resourceconfiguration.presentation.ResourceconfigurationActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.resourcelandscape.category"
+            name="%_UI_Wizard_resourcelandscape_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryModelWizardID"
+            name="%_UI_ContainerrepositoryModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category"
+            icon="icons/full/obj16/ContainerrepositoryModelFile.gif">
+         <description>%_UI_ContainerrepositoryModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryEditorID"
+            name="%_UI_ContainerrepositoryEditor_label"
+            icon="icons/full/obj16/ContainerrepositoryModelFile.gif"
+            extensions="containerrepository"
+            class="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.containerrepository.presentation.ContainerrepositoryActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.resourcelandscape.category"
+            name="%_UI_Wizard_resourcelandscape_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeModelWizardID"
+            name="%_UI_ResourcetypeModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.resourcelandscape.category"
+            icon="icons/full/obj16/ResourcetypeModelFile.gif">
+         <description>%_UI_ResourcetypeModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <editor
+            id="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeEditorID"
+            name="%_UI_ResourcetypeEditor_label"
+            icon="icons/full/obj16/ResourcetypeModelFile.gif"
+            extensions="resourcetype"
+            class="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.resourcetype.presentation.ResourcetypeActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..759bc1033025b1fc6027e0ace0f9f5c88b8d11b5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.resourcelandscape.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..0da5c2d183a8584fc33e4770d8308d3ec2093db4
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.presentation;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Containerrepository model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerrepositoryActionBarContributor
+    extends EditingDomainActionBarContributor
+    implements ISelectionChangedListener {
+    /**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IEditorPart activeEditorPart;
+
+    /**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionProvider selectionProvider;
+
+    /**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction showPropertiesViewAction =
+        new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction refreshViewerAction =
+        new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createChildActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createChildMenuManager;
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createSiblingActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createSiblingMenuManager;
+
+    /**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ContainerrepositoryActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+    /**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("containerrepository-settings"));
+        toolBarManager.add(new Separator("containerrepository-additions"));
+    }
+
+    /**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditor_menu"), "edu.kit.ipd.descartes.mm.containerrepositoryMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+    /**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+        
+    /**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+    /**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+    /**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..8a7b6e16f26a5ca989fe0d5fdacdfc654e2bc722
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryEditor.java
@@ -0,0 +1,1830 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Containerrepository model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerrepositoryEditor
+    extends MultiPageEditorPart
+    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+    /**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdapterFactoryEditingDomain editingDomain;
+
+    /**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory adapterFactory;
+
+    /**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IContentOutlinePage contentOutlinePage;
+
+    /**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStatusLineManager contentOutlineStatusLineManager;
+
+    /**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer contentOutlineViewer;
+
+    /**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertySheetPage propertySheetPage;
+
+    /**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer selectionViewer;
+
+    /**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer parentViewer;
+
+    /**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewer;
+
+    /**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ListViewer listViewer;
+
+    /**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TableViewer tableViewer;
+
+    /**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewerWithColumns;
+
+    /**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ViewerPane currentViewerPane;
+
+    /**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Viewer currentViewer;
+
+    /**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionChangedListener selectionChangedListener;
+
+    /**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+    /**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+    /**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+    /**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IPartListener partListener =
+        new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(ContainerrepositoryEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(ContainerrepositoryEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == ContainerrepositoryEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+    /**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+    /**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+    /**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean updateProblemIndication = true;
+
+    /**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EContentAdapter problemIndicationAdapter = 
+        new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+    /**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IResourceChangeListener resourceChangeListener =
+        new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(ContainerrepositoryEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == ContainerrepositoryEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(ContainerrepositoryEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+    /**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+    /**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+    /**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ContainerrepositoryEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+    /**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+    /**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+            @Override
+    protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+    /**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+    /**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object getParent(Object object) {
+            return null;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+    /**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+    /**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Viewer getViewer() {
+        return currentViewer;
+    }
+
+    /**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+    /**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+    }
+
+    /**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+    /**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ContainerrepositoryEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+    /**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+    /**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+    /**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+    /**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+    /**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+    /**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        ContainerrepositoryEditor.this.setSelectionToViewer(selection);
+                        ContainerrepositoryEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+    /**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+    /**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+    /**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+    /**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+    /**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ISelection getSelection() {
+        return editorSelection;
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+    /**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key);
+    }
+
+    /**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key, Object s1) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+    /**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..67c1ccd73045971b14496b2872a10247a858421d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/containerrepository/presentation/ContainerrepositoryModelWizard.java
@@ -0,0 +1,631 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.containerrepository.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryFactory;
+import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage;
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ContainerrepositoryModelWizard extends Wizard implements INewWizard {
+    /**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List<String> FILE_EXTENSIONS =
+        Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameExtensions").split("\\s*,\\s*")));
+
+    /**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String FORMATTED_FILE_EXTENSIONS =
+        ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+    /**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ContainerrepositoryPackage containerrepositoryPackage = ContainerrepositoryPackage.eINSTANCE;
+
+    /**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ContainerrepositoryFactory containerrepositoryFactory = containerrepositoryPackage.getContainerrepositoryFactory();
+
+    /**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ContainerrepositoryModelWizardNewFileCreationPage newFileCreationPage;
+
+    /**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ContainerrepositoryModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+    /**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStructuredSelection selection;
+
+    /**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IWorkbench workbench;
+
+    /**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected List<String> initialObjectNames;
+
+    /**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewContainerrepository")));
+    }
+
+    /**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : containerrepositoryPackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+    /**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EObject createInitialModel() {
+        EClass eClass = (EClass)containerrepositoryPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = containerrepositoryFactory.create(eClass);
+        return rootObject;
+    }
+
+    /**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+    /**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ContainerrepositoryModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ContainerrepositoryModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+        /**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+    }
+
+    /**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ContainerrepositoryModelWizardInitialObjectCreationPage extends WizardPage {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo initialObjectField;
+
+        /**
+         * @generated
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         */
+        protected List<String> encodings;
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo encodingField;
+
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ContainerrepositoryModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE);
+            {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected ModifyListener validator =
+            new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getEncoding() {
+            return encodingField.getText();
+        }
+
+        /**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected String getLabel(String typeName) {
+            try {
+                return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                ResourcelandscapeEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+    }
+
+    /**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+        @Override
+    public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new ContainerrepositoryModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_label"));
+        newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_description"));
+        newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new ContainerrepositoryModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ContainerrepositoryModelWizard_label"));
+        initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+    /**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..ae6bccb86a2b4472fe87bf830231c27af7c0670d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Resourceconfiguration model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceconfigurationActionBarContributor
+    extends EditingDomainActionBarContributor
+    implements ISelectionChangedListener {
+    /**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IEditorPart activeEditorPart;
+
+    /**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionProvider selectionProvider;
+
+    /**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction showPropertiesViewAction =
+        new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IAction refreshViewerAction =
+        new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createChildActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createChildMenuManager;
+
+    /**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> createSiblingActions;
+
+    /**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IMenuManager createSiblingMenuManager;
+
+    /**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResourceconfigurationActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+    /**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("resourceconfiguration-settings"));
+        toolBarManager.add(new Separator("resourceconfiguration-additions"));
+    }
+
+    /**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditor_menu"), "edu.kit.ipd.descartes.mm.resourceconfigurationMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+    /**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+    /**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+        
+    /**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+    /**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+    /**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bc3233582b115782dd5f817675c392afc784b8b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationEditor.java
@@ -0,0 +1,1830 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Resourceconfiguration model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceconfigurationEditor
+    extends MultiPageEditorPart
+    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+    /**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdapterFactoryEditingDomain editingDomain;
+
+    /**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory adapterFactory;
+
+    /**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IContentOutlinePage contentOutlinePage;
+
+    /**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStatusLineManager contentOutlineStatusLineManager;
+
+    /**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer contentOutlineViewer;
+
+    /**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertySheetPage propertySheetPage;
+
+    /**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer selectionViewer;
+
+    /**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer parentViewer;
+
+    /**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewer;
+
+    /**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ListViewer listViewer;
+
+    /**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TableViewer tableViewer;
+
+    /**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewerWithColumns;
+
+    /**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ViewerPane currentViewerPane;
+
+    /**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Viewer currentViewer;
+
+    /**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionChangedListener selectionChangedListener;
+
+    /**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+    /**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+    /**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+    /**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IPartListener partListener =
+        new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(ResourceconfigurationEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(ResourceconfigurationEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == ResourceconfigurationEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+    /**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+    /**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+    /**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean updateProblemIndication = true;
+
+    /**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EContentAdapter problemIndicationAdapter = 
+        new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+    /**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IResourceChangeListener resourceChangeListener =
+        new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(ResourceconfigurationEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == ResourceconfigurationEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(ResourceconfigurationEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+    /**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+    /**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+    /**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResourceconfigurationEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+    /**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+    /**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+            @Override
+    protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+    /**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+    /**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object getParent(Object object) {
+            return null;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+    /**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+    /**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Viewer getViewer() {
+        return currentViewer;
+    }
+
+    /**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+    /**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+    }
+
+    /**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+    /**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourceconfigurationEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+    /**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+    /**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+    /**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+    /**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+    /**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+    /**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        ResourceconfigurationEditor.this.setSelectionToViewer(selection);
+                        ResourceconfigurationEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+    /**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+    /**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+    /**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+    /**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+    /**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ISelection getSelection() {
+        return editorSelection;
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+    /**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key);
+    }
+
+    /**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key, Object s1) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+    /**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4fc5b9ab97e43ed850397b2a923cb150aa93d6e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourceconfiguration/presentation/ResourceconfigurationModelWizard.java
@@ -0,0 +1,631 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourceconfiguration.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationFactory;
+import edu.kit.ipd.descartes.mm.resourceconfiguration.ResourceconfigurationPackage;
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourceconfigurationModelWizard extends Wizard implements INewWizard {
+    /**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List<String> FILE_EXTENSIONS =
+        Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameExtensions").split("\\s*,\\s*")));
+
+    /**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final String FORMATTED_FILE_EXTENSIONS =
+        ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+    /**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ResourceconfigurationPackage resourceconfigurationPackage = ResourceconfigurationPackage.eINSTANCE;
+
+    /**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ResourceconfigurationFactory resourceconfigurationFactory = resourceconfigurationPackage.getResourceconfigurationFactory();
+
+    /**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ResourceconfigurationModelWizardNewFileCreationPage newFileCreationPage;
+
+    /**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ResourceconfigurationModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+    /**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStructuredSelection selection;
+
+    /**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IWorkbench workbench;
+
+    /**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected List<String> initialObjectNames;
+
+    /**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourceconfiguration")));
+    }
+
+    /**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : resourceconfigurationPackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+    /**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EObject createInitialModel() {
+        EClass eClass = (EClass)resourceconfigurationPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = resourceconfigurationFactory.create(eClass);
+        return rootObject;
+    }
+
+    /**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+    /**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ResourceconfigurationModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ResourceconfigurationModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+        /**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+    }
+
+    /**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ResourceconfigurationModelWizardInitialObjectCreationPage extends WizardPage {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo initialObjectField;
+
+        /**
+         * @generated
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         */
+        protected List<String> encodings;
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Combo encodingField;
+
+        /**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ResourceconfigurationModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE);
+            {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected ModifyListener validator =
+            new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public String getEncoding() {
+            return encodingField.getText();
+        }
+
+        /**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected String getLabel(String typeName) {
+            try {
+                return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                ResourcelandscapeEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+    }
+
+    /**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+        @Override
+    public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new ResourceconfigurationModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_label"));
+        newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_description"));
+        newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new ResourceconfigurationModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourceconfigurationModelWizard_label"));
+        initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+    /**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..1bc2d7c7ba26295ea348b3d295d9380ba69546d9
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeActionBarContributor.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Resourcelandscape model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcelandscapeActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IEditorPart activeEditorPart;
+
+	/**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction showPropertiesViewAction =
+		new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+	/**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction refreshViewerAction =
+		new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createChildActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourcelandscapeActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+	/**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("resourcelandscape-settings"));
+        toolBarManager.add(new Separator("resourcelandscape-additions"));
+    }
+
+	/**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditor_menu"), "edu.kit.ipd.descartes.mm.resourcelandscapeMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+	/**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+		
+	/**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+	/**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+	/**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+	/**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..117f7f28f3a72e2db984d9dbda72386a3f0c4d06
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditor.java
@@ -0,0 +1,1831 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Resourcelandscape model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcelandscapeEditor
+    extends MultiPageEditorPart
+    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+    /**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdapterFactoryEditingDomain editingDomain;
+
+    /**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory adapterFactory;
+
+    /**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IContentOutlinePage contentOutlinePage;
+
+    /**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStatusLineManager contentOutlineStatusLineManager;
+
+    /**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer contentOutlineViewer;
+
+    /**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertySheetPage propertySheetPage;
+
+    /**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer selectionViewer;
+
+    /**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer parentViewer;
+
+    /**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewer;
+
+    /**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ListViewer listViewer;
+
+    /**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TableViewer tableViewer;
+
+    /**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewerWithColumns;
+
+    /**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ViewerPane currentViewerPane;
+
+    /**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Viewer currentViewer;
+
+    /**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionChangedListener selectionChangedListener;
+
+    /**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+    /**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+    /**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+    /**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IPartListener partListener =
+        new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(ResourcelandscapeEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(ResourcelandscapeEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == ResourcelandscapeEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+    /**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+    /**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+    /**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean updateProblemIndication = true;
+
+    /**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EContentAdapter problemIndicationAdapter = 
+        new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+    /**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IResourceChangeListener resourceChangeListener =
+        new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(ResourcelandscapeEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == ResourcelandscapeEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(ResourcelandscapeEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+    /**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+    /**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+    /**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResourcelandscapeEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+    /**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+    /**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+            @Override
+    protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+    /**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+    /**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object getParent(Object object) {
+            return null;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+    /**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+    /**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Viewer getViewer() {
+        return currentViewer;
+    }
+
+    /**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+    /**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+        
+        // Add default resource types model.
+        editingDomain.loadResource("pathmap://DMM_APPLICATIONLEVEL_MODELS/defaultresourcetypes.resourcetype");
+    }
+
+    /**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+    /**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcelandscapeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+    /**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+    /**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+    /**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+    /**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+    /**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+    /**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        ResourcelandscapeEditor.this.setSelectionToViewer(selection);
+                        ResourcelandscapeEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+    /**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+    /**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+    /**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+    /**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+    /**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ISelection getSelection() {
+        return editorSelection;
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+    /**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key);
+    }
+
+    /**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key, Object s1) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+    /**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..b38530ea0b2c3299bcde54153975934469f25db1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeEditorPlugin.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Resourcelandscape editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ResourcelandscapeEditorPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final ResourcelandscapeEditorPlugin INSTANCE = new ResourcelandscapeEditorPlugin();
+    
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResourcelandscapeEditorPlugin() {
+        super
+            (new ResourceLocator [] {
+                CoreEditPlugin.INSTANCE,
+                IdentifierEditPlugin.INSTANCE,
+            });
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+    
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+    
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipseUIPlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+    
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..c25a2c55e9f741dedee7821398f92c2b4f186050
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcelandscape/presentation/ResourcelandscapeModelWizard.java
@@ -0,0 +1,628 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcelandscape.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory;
+import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage;
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcelandscapeModelWizard extends Wizard implements INewWizard {
+	/**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcelandscapePackage resourcelandscapePackage = ResourcelandscapePackage.eINSTANCE;
+
+	/**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcelandscapeFactory resourcelandscapeFactory = resourcelandscapePackage.getResourcelandscapeFactory();
+
+	/**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcelandscapeModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcelandscapeModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IStructuredSelection selection;
+
+	/**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IWorkbench workbench;
+
+	/**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected List<String> initialObjectNames;
+
+	/**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourcelandscape")));
+    }
+
+	/**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : resourcelandscapePackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+	/**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected EObject createInitialModel() {
+        EClass eClass = (EClass)resourcelandscapePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = resourcelandscapeFactory.create(eClass);
+        return rootObject;
+    }
+
+	/**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+	/**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class ResourcelandscapeModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public ResourcelandscapeModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+		/**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+	}
+
+	/**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class ResourcelandscapeModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo initialObjectField;
+
+		/**
+         * @generated
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         */
+		protected List<String> encodings;
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo encodingField;
+
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public ResourcelandscapeModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE); {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected ModifyListener validator =
+			new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getEncoding() {
+            return encodingField.getText();
+        }
+
+		/**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected String getLabel(String typeName) {
+            try {
+                return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                ResourcelandscapeEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+	}
+
+	/**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+		@Override
+	public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new ResourcelandscapeModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_label"));
+        newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_description"));
+        newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new ResourcelandscapeModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcelandscapeModelWizard_label"));
+        initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+	/**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..af3f90bd8c845a3069c7abbe2d064f9e98ba9aab
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeActionBarContributor.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.presentation;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Resourcetype model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcetypeActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+     * This keeps track of the active editor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IEditorPart activeEditorPart;
+
+	/**
+     * This keeps track of the current selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+     * This action opens the Properties view.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction showPropertiesViewAction =
+		new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+            @Override
+            public void run() {
+                try {
+                    getPage().showView("org.eclipse.ui.views.PropertySheet");
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+	/**
+     * This action refreshes the viewer of the current editor if the editor
+     * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IAction refreshViewerAction =
+		new Action(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+            @Override
+            public boolean isEnabled() {
+                return activeEditorPart instanceof IViewerProvider;
+            }
+
+            @Override
+            public void run() {
+                if (activeEditorPart instanceof IViewerProvider) {
+                    Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+                    if (viewer != null) {
+                        viewer.refresh();
+                    }
+                }
+            }
+        };
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createChildActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+     * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+     * generated for the current selection by the item provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+     * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+     * This creates an instance of the contributor.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public ResourcetypeActionBarContributor() {
+        super(ADDITIONS_LAST_STYLE);
+        loadResourceAction = new LoadResourceAction();
+        validateAction = new ValidateAction();
+        controlAction = new ControlAction();
+    }
+
+	/**
+     * This adds Separators for editor additions to the tool bar.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add(new Separator("resourcetype-settings"));
+        toolBarManager.add(new Separator("resourcetype-additions"));
+    }
+
+	/**
+     * This adds to the menu bar a menu and some separators for editor additions,
+     * as well as the sub-menus for object creation items.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+        super.contributeToMenu(menuManager);
+
+        IMenuManager submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditor_menu"), "edu.kit.ipd.descartes.mm.resourcetypeMenuID");
+        menuManager.insertAfter("additions", submenuManager);
+        submenuManager.add(new Separator("settings"));
+        submenuManager.add(new Separator("actions"));
+        submenuManager.add(new Separator("additions"));
+        submenuManager.add(new Separator("additions-end"));
+
+        // Prepare for CreateChild item addition or removal.
+        //
+        createChildMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        submenuManager.insertBefore("additions", createChildMenuManager);
+
+        // Prepare for CreateSibling item addition or removal.
+        //
+        createSiblingMenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+        // Force an update because Eclipse hides empty menus now.
+        //
+        submenuManager.addMenuListener
+            (new IMenuListener() {
+                 public void menuAboutToShow(IMenuManager menuManager) {
+                     menuManager.updateAll(true);
+                 }
+             });
+
+        addGlobalActions(submenuManager);
+    }
+
+	/**
+     * When the active editor changes, this remembers the change and registers with it as a selection provider.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor(part);
+        activeEditorPart = part;
+
+        // Switch to the new selection provider.
+        //
+        if (selectionProvider != null) {
+            selectionProvider.removeSelectionChangedListener(this);
+        }
+        if (part == null) {
+            selectionProvider = null;
+        }
+        else {
+            selectionProvider = part.getSite().getSelectionProvider();
+            selectionProvider.addSelectionChangedListener(this);
+
+            // Fake a selection changed event to update the menus.
+            //
+            if (selectionProvider.getSelection() != null) {
+                selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+            }
+        }
+    }
+
+	/**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+     * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+     * that can be added to the selected object and updating the menus accordingly.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void selectionChanged(SelectionChangedEvent event) {
+        // Remove any menu items for old selection.
+        //
+        if (createChildMenuManager != null) {
+            depopulateManager(createChildMenuManager, createChildActions);
+        }
+        if (createSiblingMenuManager != null) {
+            depopulateManager(createSiblingMenuManager, createSiblingActions);
+        }
+
+        // Query the new selection for appropriate new child/sibling descriptors
+        //
+        Collection<?> newChildDescriptors = null;
+        Collection<?> newSiblingDescriptors = null;
+
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+            Object object = ((IStructuredSelection)selection).getFirstElement();
+
+            EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+            newChildDescriptors = domain.getNewChildDescriptors(object, null);
+            newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+        }
+
+        // Generate actions for selection; populate and redraw the menus.
+        //
+        createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+        createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+        if (createChildMenuManager != null) {
+            populateManager(createChildMenuManager, createChildActions, null);
+            createChildMenuManager.update(true);
+        }
+        if (createSiblingMenuManager != null) {
+            populateManager(createSiblingMenuManager, createSiblingActions, null);
+            createSiblingMenuManager.update(true);
+        }
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+     * and returns the collection of these actions.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+        Collection<IAction> actions = new ArrayList<IAction>();
+        if (descriptors != null) {
+            for (Object descriptor : descriptors) {
+                actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+            }
+        }
+        return actions;
+    }
+
+	/**
+     * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+     * by inserting them before the specified contribution item <code>contributionID</code>.
+     * If <code>contributionID</code> is <code>null</code>, they are simply added.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+        if (actions != null) {
+            for (IAction action : actions) {
+                if (contributionID != null) {
+                    manager.insertBefore(contributionID, action);
+                }
+                else {
+                    manager.add(action);
+                }
+            }
+        }
+    }
+		
+	/**
+     * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+     * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+        if (actions != null) {
+            IContributionItem[] items = manager.getItems();
+            for (int i = 0; i < items.length; i++) {
+                // Look into SubContributionItems
+                //
+                IContributionItem contributionItem = items[i];
+                while (contributionItem instanceof SubContributionItem) {
+                    contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+                }
+
+                // Delete the ActionContributionItems with matching action.
+                //
+                if (contributionItem instanceof ActionContributionItem) {
+                    IAction action = ((ActionContributionItem)contributionItem).getAction();
+                    if (actions.contains(action)) {
+                        manager.remove(contributionItem);
+                    }
+                }
+            }
+        }
+    }
+
+	/**
+     * This populates the pop-up menu before it appears.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+        super.menuAboutToShow(menuManager);
+        MenuManager submenuManager = null;
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+        populateManager(submenuManager, createChildActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+
+        submenuManager = new MenuManager(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+        populateManager(submenuManager, createSiblingActions, null);
+        menuManager.insertBefore("edit", submenuManager);
+    }
+
+	/**
+     * This inserts global actions before the "additions-end" separator.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+        menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+        menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+        refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+        menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+        super.addGlobalActions(menuManager);
+    }
+
+	/**
+     * This ensures that a delete action will clean up all references to deleted objects.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+        return true;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..4778fc3cffd68fe1a693d6bdbd50479af14b2490
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeEditor.java
@@ -0,0 +1,1830 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.containerrepository.provider.ContainerrepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourceconfiguration.provider.ResourceconfigurationItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a Resourcetype model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcetypeEditor
+    extends MultiPageEditorPart
+    implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+    /**
+     * This keeps track of the editing domain that is used to track all changes to the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AdapterFactoryEditingDomain editingDomain;
+
+    /**
+     * This is the one adapter factory used for providing views of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory adapterFactory;
+
+    /**
+     * This is the content outline page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IContentOutlinePage contentOutlinePage;
+
+    /**
+     * This is a kludge...
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IStatusLineManager contentOutlineStatusLineManager;
+
+    /**
+     * This is the content outline page's viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer contentOutlineViewer;
+
+    /**
+     * This is the property sheet page.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PropertySheetPage propertySheetPage;
+
+    /**
+     * This is the viewer that shadows the selection in the content outline.
+     * The parent relation must be correctly defined for this to work.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer selectionViewer;
+
+    /**
+     * This inverts the roll of parent and child in the content provider and show parents as a tree.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer parentViewer;
+
+    /**
+     * This shows how a tree view works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewer;
+
+    /**
+     * This shows how a list view works.
+     * A list viewer doesn't support icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ListViewer listViewer;
+
+    /**
+     * This shows how a table view works.
+     * A table can be used as a list with icons.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TableViewer tableViewer;
+
+    /**
+     * This shows how a tree view with columns works.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TreeViewer treeViewerWithColumns;
+
+    /**
+     * This keeps track of the active viewer pane, in the book.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ViewerPane currentViewerPane;
+
+    /**
+     * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Viewer currentViewer;
+
+    /**
+     * This listens to which ever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelectionChangedListener selectionChangedListener;
+
+    /**
+     * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+    /**
+     * This keeps track of the selection of the editor as a whole.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+    /**
+     * The MarkerHelper is responsible for creating workspace resource markers presented
+     * in Eclipse's Problems View.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+    /**
+     * This listens for when the outline becomes active
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IPartListener partListener =
+        new IPartListener() {
+            public void partActivated(IWorkbenchPart p) {
+                if (p instanceof ContentOutline) {
+                    if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+                        getActionBarContributor().setActiveEditor(ResourcetypeEditor.this);
+
+                        setCurrentViewer(contentOutlineViewer);
+                    }
+                }
+                else if (p instanceof PropertySheet) {
+                    if (((PropertySheet)p).getCurrentPage() == propertySheetPage) {
+                        getActionBarContributor().setActiveEditor(ResourcetypeEditor.this);
+                        handleActivate();
+                    }
+                }
+                else if (p == ResourcetypeEditor.this) {
+                    handleActivate();
+                }
+            }
+            public void partBroughtToTop(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partClosed(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partDeactivated(IWorkbenchPart p) {
+                // Ignore.
+            }
+            public void partOpened(IWorkbenchPart p) {
+                // Ignore.
+            }
+        };
+
+    /**
+     * Resources that have been removed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been changed since last activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+    /**
+     * Resources that have been saved.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+    /**
+     * Map to store the diagnostic associated with a resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+    /**
+     * Controls whether the problem indication should be updated.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean updateProblemIndication = true;
+
+    /**
+     * Adapter used to update the problem indication when resources are demanded loaded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected EContentAdapter problemIndicationAdapter = 
+        new EContentAdapter() {
+            @Override
+            public void notifyChanged(Notification notification) {
+                if (notification.getNotifier() instanceof Resource) {
+                    switch (notification.getFeatureID(Resource.class)) {
+                        case Resource.RESOURCE__IS_LOADED:
+                        case Resource.RESOURCE__ERRORS:
+                        case Resource.RESOURCE__WARNINGS: {
+                            Resource resource = (Resource)notification.getNotifier();
+                            Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+                            if (diagnostic.getSeverity() != Diagnostic.OK) {
+                                resourceToDiagnosticMap.put(resource, diagnostic);
+                            }
+                            else {
+                                resourceToDiagnosticMap.remove(resource);
+                            }
+
+                            if (updateProblemIndication) {
+                                getSite().getShell().getDisplay().asyncExec
+                                    (new Runnable() {
+                                         public void run() {
+                                             updateProblemIndication();
+                                         }
+                                     });
+                            }
+                            break;
+                        }
+                    }
+                }
+                else {
+                    super.notifyChanged(notification);
+                }
+            }
+
+            @Override
+            protected void setTarget(Resource target) {
+                basicSetTarget(target);
+            }
+
+            @Override
+            protected void unsetTarget(Resource target) {
+                basicUnsetTarget(target);
+            }
+        };
+
+    /**
+     * This listens for workspace changes.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IResourceChangeListener resourceChangeListener =
+        new IResourceChangeListener() {
+            public void resourceChanged(IResourceChangeEvent event) {
+                IResourceDelta delta = event.getDelta();
+                try {
+                    class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+                        protected ResourceSet resourceSet = editingDomain.getResourceSet();
+                        protected Collection<Resource> changedResources = new ArrayList<Resource>();
+                        protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+                        public boolean visit(IResourceDelta delta) {
+                            if (delta.getResource().getType() == IResource.FILE) {
+                                if (delta.getKind() == IResourceDelta.REMOVED ||
+                                    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+                                    Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+                                    if (resource != null) {
+                                        if (delta.getKind() == IResourceDelta.REMOVED) {
+                                            removedResources.add(resource);
+                                        }
+                                        else if (!savedResources.remove(resource)) {
+                                            changedResources.add(resource);
+                                        }
+                                    }
+                                }
+                            }
+
+                            return true;
+                        }
+
+                        public Collection<Resource> getChangedResources() {
+                            return changedResources;
+                        }
+
+                        public Collection<Resource> getRemovedResources() {
+                            return removedResources;
+                        }
+                    }
+
+                    final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+                    delta.accept(visitor);
+
+                    if (!visitor.getRemovedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     removedResources.addAll(visitor.getRemovedResources());
+                                     if (!isDirty()) {
+                                         getSite().getPage().closeEditor(ResourcetypeEditor.this, false);
+                                     }
+                                 }
+                             });
+                    }
+
+                    if (!visitor.getChangedResources().isEmpty()) {
+                        getSite().getShell().getDisplay().asyncExec
+                            (new Runnable() {
+                                 public void run() {
+                                     changedResources.addAll(visitor.getChangedResources());
+                                     if (getSite().getPage().getActiveEditor() == ResourcetypeEditor.this) {
+                                         handleActivate();
+                                     }
+                                 }
+                             });
+                    }
+                }
+                catch (CoreException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+        };
+
+    /**
+     * Handles activation of the editor or it's associated views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleActivate() {
+        // Recompute the read only state.
+        //
+        if (editingDomain.getResourceToReadOnlyMap() != null) {
+          editingDomain.getResourceToReadOnlyMap().clear();
+
+          // Refresh any actions that may become enabled or disabled.
+          //
+          setSelection(getSelection());
+        }
+
+        if (!removedResources.isEmpty()) {
+            if (handleDirtyConflict()) {
+                getSite().getPage().closeEditor(ResourcetypeEditor.this, false);
+            }
+            else {
+                removedResources.clear();
+                changedResources.clear();
+                savedResources.clear();
+            }
+        }
+        else if (!changedResources.isEmpty()) {
+            changedResources.removeAll(savedResources);
+            handleChangedResources();
+            changedResources.clear();
+            savedResources.clear();
+        }
+    }
+
+    /**
+     * Handles what to do with changed resources on activation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void handleChangedResources() {
+        if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+            if (isDirty()) {
+                changedResources.addAll(editingDomain.getResourceSet().getResources());
+            }
+            editingDomain.getCommandStack().flush();
+
+            updateProblemIndication = false;
+            for (Resource resource : changedResources) {
+                if (resource.isLoaded()) {
+                    resource.unload();
+                    try {
+                        resource.load(Collections.EMPTY_MAP);
+                    }
+                    catch (IOException exception) {
+                        if (!resourceToDiagnosticMap.containsKey(resource)) {
+                            resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                        }
+                    }
+                }
+            }
+
+            if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+                setSelection(StructuredSelection.EMPTY);
+            }
+
+            updateProblemIndication = true;
+            updateProblemIndication();
+        }
+    }
+  
+    /**
+     * Updates the problems indication with the information described in the specified diagnostic.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void updateProblemIndication() {
+        if (updateProblemIndication) {
+            BasicDiagnostic diagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.OK,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     null,
+                     new Object [] { editingDomain.getResourceSet() });
+            for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+                if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+                    diagnostic.add(childDiagnostic);
+                }
+            }
+
+            int lastEditorPage = getPageCount() - 1;
+            if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+                ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    setActivePage(lastEditorPage);
+                }
+            }
+            else if (diagnostic.getSeverity() != Diagnostic.OK) {
+                ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+                problemEditorPart.setDiagnostic(diagnostic);
+                problemEditorPart.setMarkerHelper(markerHelper);
+                try {
+                    addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+                    setPageText(lastEditorPage, problemEditorPart.getPartName());
+                    setActivePage(lastEditorPage);
+                    showTabs();
+                }
+                catch (PartInitException exception) {
+                    ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                }
+            }
+
+            if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+                markerHelper.deleteMarkers(editingDomain.getResourceSet());
+                if (diagnostic.getSeverity() != Diagnostic.OK) {
+                    try {
+                        markerHelper.createMarkers(diagnostic);
+                    }
+                    catch (CoreException exception) {
+                        ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Shows a dialog that asks if conflicting changes should be discarded.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean handleDirtyConflict() {
+        return
+            MessageDialog.openQuestion
+                (getSite().getShell(),
+                 getString("_UI_FileConflict_label"),
+                 getString("_WARN_FileConflict"));
+    }
+
+    /**
+     * This creates a model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResourcetypeEditor() {
+        super();
+        initializeEditingDomain();
+    }
+
+    /**
+     * This sets up the editing domain for the model editor.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void initializeEditingDomain() {
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcelandscapeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourceconfigurationItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ContainerrepositoryItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+        // Create the command stack that will notify this editor as commands are executed.
+        //
+        BasicCommandStack commandStack = new BasicCommandStack();
+
+        // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+        //
+        commandStack.addCommandStackListener
+            (new CommandStackListener() {
+                 public void commandStackChanged(final EventObject event) {
+                     getContainer().getDisplay().asyncExec
+                         (new Runnable() {
+                              public void run() {
+                                  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+                                  // Try to select the affected objects.
+                                  //
+                                  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+                                  if (mostRecentCommand != null) {
+                                      setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+                                  }
+                                  if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+                                      propertySheetPage.refresh();
+                                  }
+                              }
+                          });
+                 }
+             });
+
+        // Create the editing domain with a special command stack.
+        //
+        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+    }
+
+    /**
+     * This is here for the listener to be able to call it.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+            @Override
+    protected void firePropertyChange(int action) {
+        super.firePropertyChange(action);
+    }
+
+    /**
+     * This sets the selection into whichever viewer is active.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelectionToViewer(Collection<?> collection) {
+        final Collection<?> theSelection = collection;
+        // Make sure it's okay.
+        //
+        if (theSelection != null && !theSelection.isEmpty()) {
+            Runnable runnable =
+                new Runnable() {
+                    public void run() {
+                        // Try to select the items in the current content viewer of the editor.
+                        //
+                        if (currentViewer != null) {
+                            currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+                        }
+                    }
+                };
+            getSite().getShell().getDisplay().asyncExec(runnable);
+        }
+    }
+
+    /**
+     * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+     * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+     * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomain getEditingDomain() {
+        return editingDomain;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+            super(adapterFactory);
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getElements(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object [] getChildren(Object object) {
+            Object parent = super.getParent(object);
+            return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public boolean hasChildren(Object object) {
+            Object parent = super.getParent(object);
+            return parent != null;
+        }
+
+        /**
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        @Override
+        public Object getParent(Object object) {
+            return null;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewerPane(ViewerPane viewerPane) {
+        if (currentViewerPane != viewerPane) {
+            if (currentViewerPane != null) {
+                currentViewerPane.showFocus(false);
+            }
+            currentViewerPane = viewerPane;
+        }
+        setCurrentViewer(currentViewerPane.getViewer());
+    }
+
+    /**
+     * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+     * is the current one.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setCurrentViewer(Viewer viewer) {
+        // If it is changing...
+        //
+        if (currentViewer != viewer) {
+            if (selectionChangedListener == null) {
+                // Create the listener on demand.
+                //
+                selectionChangedListener =
+                    new ISelectionChangedListener() {
+                        // This just notifies those things that are affected by the section.
+                        //
+                        public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+                            setSelection(selectionChangedEvent.getSelection());
+                        }
+                    };
+            }
+
+            // Stop listening to the old one.
+            //
+            if (currentViewer != null) {
+                currentViewer.removeSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Start listening to the new one.
+            //
+            if (viewer != null) {
+                viewer.addSelectionChangedListener(selectionChangedListener);
+            }
+
+            // Remember it.
+            //
+            currentViewer = viewer;
+
+            // Set the editors selection based on the current viewer's selection.
+            //
+            setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+        }
+    }
+
+    /**
+     * This returns the viewer as required by the {@link IViewerProvider} interface.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Viewer getViewer() {
+        return currentViewer;
+    }
+
+    /**
+     * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createContextMenuFor(StructuredViewer viewer) {
+        MenuManager contextMenu = new MenuManager("#PopUp");
+        contextMenu.add(new Separator("additions"));
+        contextMenu.setRemoveAllWhenShown(true);
+        contextMenu.addMenuListener(this);
+        Menu menu= contextMenu.createContextMenu(viewer.getControl());
+        viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+        int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+        Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+        viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+        viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+    }
+
+    /**
+     * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createModel() {
+        URI resourceURI = EditUIUtil.getURI(getEditorInput());
+        Exception exception = null;
+        Resource resource = null;
+        try {
+            // Load the resource through the editing domain.
+            //
+            resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+        }
+        catch (Exception e) {
+            exception = e;
+            resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+        }
+
+        Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+        if (diagnostic.getSeverity() != Diagnostic.OK) {
+            resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+        }
+        editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+    }
+
+    /**
+     * Returns a diagnostic describing the errors and warnings listed in the resource
+     * and the specified exception (if any).
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+        if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+            BasicDiagnostic basicDiagnostic =
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object [] { exception == null ? (Object)resource : exception });
+            basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+            return basicDiagnostic;
+        }
+        else if (exception != null) {
+            return
+                new BasicDiagnostic
+                    (Diagnostic.ERROR,
+                     "edu.kit.ipd.descartes.mm.resourcelandscape.editor",
+                     0,
+                     getString("_UI_CreateModelError_message", resource.getURI()),
+                     new Object[] { exception });
+        }
+        else {
+            return Diagnostic.OK_INSTANCE;
+        }
+    }
+
+    /**
+     * This is the method used by the framework to install your own controls.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void createPages() {
+        // Creates the model from the editor input
+        //
+        createModel();
+
+        // Only creates the other pages if there is something that can be edited
+        //
+        if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+            // Create a page for the selection tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                selectionViewer = (TreeViewer)viewerPane.getViewer();
+                selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+                selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                selectionViewer.setInput(editingDomain.getResourceSet());
+                selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                viewerPane.setTitle(editingDomain.getResourceSet());
+
+                new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(selectionViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+            }
+
+            // Create a page for the parent tree view.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            Tree tree = new Tree(composite, SWT.MULTI);
+                            TreeViewer newTreeViewer = new TreeViewer(tree);
+                            return newTreeViewer;
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                parentViewer = (TreeViewer)viewerPane.getViewer();
+                parentViewer.setAutoExpandLevel(30);
+                parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+                parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(parentViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ParentPage_label"));
+            }
+
+            // This is the page for the list viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new ListViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                listViewer = (ListViewer)viewerPane.getViewer();
+                listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(listViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_ListPage_label"));
+            }
+
+            // This is the page for the tree viewer
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                treeViewer = (TreeViewer)viewerPane.getViewer();
+                treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+                createContextMenuFor(treeViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreePage_label"));
+            }
+
+            // This is the page for the table viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TableViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+                tableViewer = (TableViewer)viewerPane.getViewer();
+
+                Table table = tableViewer.getTable();
+                TableLayout layout = new TableLayout();
+                table.setLayout(layout);
+                table.setHeaderVisible(true);
+                table.setLinesVisible(true);
+
+                TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(3, 100, true));
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+
+                TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+                layout.addColumnData(new ColumnWeightData(2, 100, true));
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+
+                tableViewer.setColumnProperties(new String [] {"a", "b"});
+                tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(tableViewer);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TablePage_label"));
+            }
+
+            // This is the page for the table tree viewer.
+            //
+            {
+                ViewerPane viewerPane =
+                    new ViewerPane(getSite().getPage(), ResourcetypeEditor.this) {
+                        @Override
+                        public Viewer createViewer(Composite composite) {
+                            return new TreeViewer(composite);
+                        }
+                        @Override
+                        public void requestActivation() {
+                            super.requestActivation();
+                            setCurrentViewerPane(this);
+                        }
+                    };
+                viewerPane.createControl(getContainer());
+
+                treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+                Tree tree = treeViewerWithColumns.getTree();
+                tree.setLayoutData(new FillLayout());
+                tree.setHeaderVisible(true);
+                tree.setLinesVisible(true);
+
+                TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+                objectColumn.setText(getString("_UI_ObjectColumn_label"));
+                objectColumn.setResizable(true);
+                objectColumn.setWidth(250);
+
+                TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+                selfColumn.setText(getString("_UI_SelfColumn_label"));
+                selfColumn.setResizable(true);
+                selfColumn.setWidth(200);
+
+                treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+                treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+                createContextMenuFor(treeViewerWithColumns);
+                int pageIndex = addPage(viewerPane.getControl());
+                setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+            }
+
+            getSite().getShell().getDisplay().asyncExec
+                (new Runnable() {
+                     public void run() {
+                         setActivePage(0);
+                     }
+                 });
+        }
+
+        // Ensures that this editor will only display the page's tab
+        // area if there are more than one page
+        //
+        getContainer().addControlListener
+            (new ControlAdapter() {
+                boolean guard = false;
+                @Override
+                public void controlResized(ControlEvent event) {
+                    if (!guard) {
+                        guard = true;
+                        hideTabs();
+                        guard = false;
+                    }
+                }
+             });
+
+        getSite().getShell().getDisplay().asyncExec
+            (new Runnable() {
+                 public void run() {
+                     updateProblemIndication();
+                 }
+             });
+    }
+
+    /**
+     * If there is just one page in the multi-page editor part,
+     * this hides the single tab at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void hideTabs() {
+        if (getPageCount() <= 1) {
+            setPageText(0, "");
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(1);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y + 6);
+            }
+        }
+    }
+
+    /**
+     * If there is more than one page in the multi-page editor part,
+     * this shows the tabs at the bottom.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void showTabs() {
+        if (getPageCount() > 1) {
+            setPageText(0, getString("_UI_SelectionPage_label"));
+            if (getContainer() instanceof CTabFolder) {
+                ((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+                Point point = getContainer().getSize();
+                getContainer().setSize(point.x, point.y - 6);
+            }
+        }
+    }
+
+    /**
+     * This is used to track the active viewer.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void pageChange(int pageIndex) {
+        super.pageChange(pageIndex);
+
+        if (contentOutlinePage != null) {
+            handleContentOutlineSelection(contentOutlinePage.getSelection());
+        }
+    }
+
+    /**
+     * This is how the framework determines which interfaces we implement.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object getAdapter(Class key) {
+        if (key.equals(IContentOutlinePage.class)) {
+            return showOutlineView() ? getContentOutlinePage() : null;
+        }
+        else if (key.equals(IPropertySheetPage.class)) {
+            return getPropertySheetPage();
+        }
+        else if (key.equals(IGotoMarker.class)) {
+            return this;
+        }
+        else {
+            return super.getAdapter(key);
+        }
+    }
+
+    /**
+     * This accesses a cached version of the content outliner.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IContentOutlinePage getContentOutlinePage() {
+        if (contentOutlinePage == null) {
+            // The content outline is just a tree.
+            //
+            class MyContentOutlinePage extends ContentOutlinePage {
+                @Override
+                public void createControl(Composite parent) {
+                    super.createControl(parent);
+                    contentOutlineViewer = getTreeViewer();
+                    contentOutlineViewer.addSelectionChangedListener(this);
+
+                    // Set up the tree viewer.
+                    //
+                    contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+                    contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+                    contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+                    // Make sure our popups work.
+                    //
+                    createContextMenuFor(contentOutlineViewer);
+
+                    if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+                      // Select the root object in the view.
+                      //
+                      contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+                    }
+                }
+
+                @Override
+                public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+                    super.makeContributions(menuManager, toolBarManager, statusLineManager);
+                    contentOutlineStatusLineManager = statusLineManager;
+                }
+
+                @Override
+                public void setActionBars(IActionBars actionBars) {
+                    super.setActionBars(actionBars);
+                    getActionBarContributor().shareGlobalActions(this, actionBars);
+                }
+            }
+
+            contentOutlinePage = new MyContentOutlinePage();
+
+            // Listen to selection so that we can handle it is a special way.
+            //
+            contentOutlinePage.addSelectionChangedListener
+                (new ISelectionChangedListener() {
+                     // This ensures that we handle selections correctly.
+                     //
+                     public void selectionChanged(SelectionChangedEvent event) {
+                         handleContentOutlineSelection(event.getSelection());
+                     }
+                 });
+        }
+
+        return contentOutlinePage;
+    }
+
+    /**
+     * This accesses a cached version of the property sheet.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IPropertySheetPage getPropertySheetPage() {
+        if (propertySheetPage == null) {
+            propertySheetPage =
+                new ExtendedPropertySheetPage(editingDomain) {
+                    @Override
+                    public void setSelectionToViewer(List<?> selection) {
+                        ResourcetypeEditor.this.setSelectionToViewer(selection);
+                        ResourcetypeEditor.this.setFocus();
+                    }
+
+                    @Override
+                    public void setActionBars(IActionBars actionBars) {
+                        super.setActionBars(actionBars);
+                        getActionBarContributor().shareGlobalActions(this, actionBars);
+                    }
+                };
+            propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+
+        return propertySheetPage;
+    }
+
+    /**
+     * This deals with how we want selection in the outliner to affect the other views.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void handleContentOutlineSelection(ISelection selection) {
+        if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+            Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+            if (selectedElements.hasNext()) {
+                // Get the first selected element.
+                //
+                Object selectedElement = selectedElements.next();
+
+                // If it's the selection viewer, then we want it to select the same selection as this selection.
+                //
+                if (currentViewerPane.getViewer() == selectionViewer) {
+                    ArrayList<Object> selectionList = new ArrayList<Object>();
+                    selectionList.add(selectedElement);
+                    while (selectedElements.hasNext()) {
+                        selectionList.add(selectedElements.next());
+                    }
+
+                    // Set the selection to the widget.
+                    //
+                    selectionViewer.setSelection(new StructuredSelection(selectionList));
+                }
+                else {
+                    // Set the input to the widget.
+                    //
+                    if (currentViewerPane.getViewer().getInput() != selectedElement) {
+                        currentViewerPane.getViewer().setInput(selectedElement);
+                        currentViewerPane.setTitle(selectedElement);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply tests the command stack.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDirty() {
+        return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+    }
+
+    /**
+     * This is for implementing {@link IEditorPart} and simply saves the model file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSave(IProgressMonitor progressMonitor) {
+        // Save only resources that have actually changed.
+        //
+        final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+        saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+        // Do the work within an operation because this is a long running activity that modifies the workbench.
+        //
+        WorkspaceModifyOperation operation =
+            new WorkspaceModifyOperation() {
+                // This is the method that gets invoked when the operation runs.
+                //
+                @Override
+                public void execute(IProgressMonitor monitor) {
+                    // Save the resources to the file system.
+                    //
+                    boolean first = true;
+                    for (Resource resource : editingDomain.getResourceSet().getResources()) {
+                        if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+                            try {
+                                long timeStamp = resource.getTimeStamp();
+                                resource.save(saveOptions);
+                                if (resource.getTimeStamp() != timeStamp) {
+                                    savedResources.add(resource);
+                                }
+                            }
+                            catch (Exception exception) {
+                                resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+                            }
+                            first = false;
+                        }
+                    }
+                }
+            };
+
+        updateProblemIndication = false;
+        try {
+            // This runs the options, and shows progress.
+            //
+            new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+            // Refresh the necessary state.
+            //
+            ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+            firePropertyChange(IEditorPart.PROP_DIRTY);
+        }
+        catch (Exception exception) {
+            // Something went wrong that shouldn't.
+            //
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+        updateProblemIndication = true;
+        updateProblemIndication();
+    }
+
+    /**
+     * This returns whether something has been persisted to the URI of the specified resource.
+     * The implementation uses the URI converter from the editor's resource set to try to open an input stream. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean isPersisted(Resource resource) {
+        boolean result = false;
+        try {
+            InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+            if (stream != null) {
+                result = true;
+                stream.close();
+            }
+        }
+        catch (IOException e) {
+            // Ignore
+        }
+        return result;
+    }
+
+    /**
+     * This always returns true because it is not currently supported.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        return true;
+    }
+
+    /**
+     * This also changes the editor's input.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void doSaveAs() {
+        SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+        saveAsDialog.open();
+        IPath path = saveAsDialog.getResult();
+        if (path != null) {
+            IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+            if (file != null) {
+                doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+            }
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void doSaveAs(URI uri, IEditorInput editorInput) {
+        (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        IProgressMonitor progressMonitor =
+            getActionBars().getStatusLineManager() != null ?
+                getActionBars().getStatusLineManager().getProgressMonitor() :
+                new NullProgressMonitor();
+        doSave(progressMonitor);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void gotoMarker(IMarker marker) {
+        try {
+            if (marker.getType().equals(EValidator.MARKER)) {
+                String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+                if (uriAttribute != null) {
+                    URI uri = URI.createURI(uriAttribute);
+                    EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+                    if (eObject != null) {
+                      setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+                    }
+                }
+            }
+        }
+        catch (CoreException exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+        }
+    }
+
+    /**
+     * This is called during startup.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput editorInput) {
+        setSite(site);
+        setInputWithNotify(editorInput);
+        setPartName(editorInput.getName());
+        site.setSelectionProvider(this);
+        site.getPage().addPartListener(partListener);
+        ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFocus() {
+        if (currentViewerPane != null) {
+            currentViewerPane.setFocus();
+        }
+        else {
+            getControl(getActivePage()).setFocus();
+        }
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.add(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+        selectionChangedListeners.remove(listener);
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ISelection getSelection() {
+        return editorSelection;
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+     * Calling this result will notify the listeners.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setSelection(ISelection selection) {
+        editorSelection = selection;
+
+        for (ISelectionChangedListener listener : selectionChangedListeners) {
+            listener.selectionChanged(new SelectionChangedEvent(this, selection));
+        }
+        setStatusLineManager(selection);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setStatusLineManager(ISelection selection) {
+        IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+            contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+        if (statusLineManager != null) {
+            if (selection instanceof IStructuredSelection) {
+                Collection<?> collection = ((IStructuredSelection)selection).toList();
+                switch (collection.size()) {
+                    case 0: {
+                        statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+                        break;
+                    }
+                    case 1: {
+                        String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+                        statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+                        break;
+                    }
+                    default: {
+                        statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+                        break;
+                    }
+                }
+            }
+            else {
+                statusLineManager.setMessage("");
+            }
+        }
+    }
+
+    /**
+     * This looks up a string in the plugin's plugin.properties file.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key);
+    }
+
+    /**
+     * This looks up a string in plugin.properties, making a substitution.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static String getString(String key, Object s1) {
+        return ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+    }
+
+    /**
+     * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void menuAboutToShow(IMenuManager menuManager) {
+        ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public EditingDomainActionBarContributor getActionBarContributor() {
+        return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public IActionBars getActionBars() {
+        return getActionBarContributor().getActionBars();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AdapterFactory getAdapterFactory() {
+        return adapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        updateProblemIndication = false;
+
+        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+        getSite().getPage().removePartListener(partListener);
+
+        adapterFactory.dispose();
+
+        if (getActionBarContributor().getActiveEditor() == this) {
+            getActionBarContributor().setActiveEditor(null);
+        }
+
+        if (propertySheetPage != null) {
+            propertySheetPage.dispose();
+        }
+
+        if (contentOutlinePage != null) {
+            contentOutlinePage.dispose();
+        }
+
+        super.dispose();
+    }
+
+    /**
+     * Returns whether the outline view should be presented to the user.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected boolean showOutlineView() {
+        return true;
+    }
+}
diff --git a/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..22252d62d5644893fac4fb796d02e5d92dad4f25
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.resourcelandscape.editor/src/edu/kit/ipd/descartes/mm/resourcetype/presentation/ResourcetypeModelWizard.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.resourcetype.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypeFactory;
+import edu.kit.ipd.descartes.mm.resourcetype.ResourcetypePackage;
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.presentation.ResourcelandscapeEditorPlugin;
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResourcetypeModelWizard extends Wizard implements INewWizard {
+	/**
+     * The supported extensions for created files.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+     * A formatted list of supported file extensions, suitable for display.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+     * This caches an instance of the model package.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcetypePackage resourcetypePackage = ResourcetypePackage.eINSTANCE;
+
+	/**
+     * This caches an instance of the model factory.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcetypeFactory resourcetypeFactory = resourcetypePackage.getResourcetypeFactory();
+
+	/**
+     * This is the file creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcetypeModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+     * This is the initial object creation page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected ResourcetypeModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+     * Remember the selection during initialization for populating the default container.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IStructuredSelection selection;
+
+	/**
+     * Remember the workbench during initialization.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected IWorkbench workbench;
+
+	/**
+     * Caches the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected List<String> initialObjectNames;
+
+	/**
+     * This just records the information.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+        this.workbench = workbench;
+        this.selection = selection;
+        setWindowTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(ResourcelandscapeEditorPlugin.INSTANCE.getImage("full/wizban/NewResourcetype")));
+    }
+
+	/**
+     * Returns the names of the types that can be created as the root object.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected Collection<String> getInitialObjectNames() {
+        if (initialObjectNames == null) {
+            initialObjectNames = new ArrayList<String>();
+            for (EClassifier eClassifier : resourcetypePackage.getEClassifiers()) {
+                if (eClassifier instanceof EClass) {
+                    EClass eClass = (EClass)eClassifier;
+                    if (!eClass.isAbstract()) {
+                        initialObjectNames.add(eClass.getName());
+                    }
+                }
+            }
+            Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+        }
+        return initialObjectNames;
+    }
+
+	/**
+     * Create a new model.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	protected EObject createInitialModel() {
+        EClass eClass = (EClass)resourcetypePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+        EObject rootObject = resourcetypeFactory.create(eClass);
+        return rootObject;
+    }
+
+	/**
+     * Do the work after everything is specified.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	@Override
+	public boolean performFinish() {
+        try {
+            // Remember the file.
+            //
+            final IFile modelFile = getModelFile();
+
+            // Do the work within an operation.
+            //
+            WorkspaceModifyOperation operation =
+                new WorkspaceModifyOperation() {
+                    @Override
+                    protected void execute(IProgressMonitor progressMonitor) {
+                        try {
+                            // Create a resource set
+                            //
+                            ResourceSet resourceSet = new ResourceSetImpl();
+
+                            // Get the URI of the model file.
+                            //
+                            URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+                            // Create a resource for this file.
+                            //
+                            Resource resource = resourceSet.createResource(fileURI);
+
+                            // Add the initial model object to the contents.
+                            //
+                            EObject rootObject = createInitialModel();
+                            if (rootObject != null) {
+                                resource.getContents().add(rootObject);
+                            }
+
+                            // Save the contents of the resource to the file system.
+                            //
+                            Map<Object, Object> options = new HashMap<Object, Object>();
+                            options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+                            resource.save(options);
+                        }
+                        catch (Exception exception) {
+                            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+                        }
+                        finally {
+                            progressMonitor.done();
+                        }
+                    }
+                };
+
+            getContainer().run(false, false, operation);
+
+            // Select the new file resource in the current view.
+            //
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            final IWorkbenchPart activePart = page.getActivePart();
+            if (activePart instanceof ISetSelectionTarget) {
+                final ISelection targetSelection = new StructuredSelection(modelFile);
+                getShell().getDisplay().asyncExec
+                    (new Runnable() {
+                         public void run() {
+                             ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+                         }
+                     });
+            }
+
+            // Open an editor on the new file.
+            //
+            try {
+                page.openEditor
+                    (new FileEditorInput(modelFile),
+                     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+            }
+            catch (PartInitException exception) {
+                MessageDialog.openError(workbenchWindow.getShell(), ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+                return false;
+            }
+
+            return true;
+        }
+        catch (Exception exception) {
+            ResourcelandscapeEditorPlugin.INSTANCE.log(exception);
+            return false;
+        }
+    }
+
+	/**
+     * This is the one page of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class ResourcetypeModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public ResourcetypeModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+            super(pageId, selection);
+        }
+
+		/**
+         * The framework calls this to see if the file is correct.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		protected boolean validatePage() {
+            if (super.validatePage()) {
+                String extension = new Path(getFileName()).getFileExtension();
+                if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+                    String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+                    setErrorMessage(ResourcelandscapeEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+                    return false;
+                }
+                return true;
+            }
+            return false;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public IFile getModelFile() {
+            return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+        }
+	}
+
+	/**
+     * This is the page where the type of object to create is selected.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public class ResourcetypeModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo initialObjectField;
+
+		/**
+         * @generated
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         */
+		protected List<String> encodings;
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Combo encodingField;
+
+		/**
+         * Pass in the selection.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public ResourcetypeModelWizardInitialObjectCreationPage(String pageId) {
+            super(pageId);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NONE); {
+                GridLayout layout = new GridLayout();
+                layout.numColumns = 1;
+                layout.verticalSpacing = 12;
+                composite.setLayout(layout);
+
+                GridData data = new GridData();
+                data.verticalAlignment = GridData.FILL;
+                data.grabExcessVerticalSpace = true;
+                data.horizontalAlignment = GridData.FILL;
+                composite.setLayoutData(data);
+            }
+
+            Label containerLabel = new Label(composite, SWT.LEFT);
+            {
+                containerLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                containerLabel.setLayoutData(data);
+            }
+
+            initialObjectField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                initialObjectField.setLayoutData(data);
+            }
+
+            for (String objectName : getInitialObjectNames()) {
+                initialObjectField.add(getLabel(objectName));
+            }
+
+            if (initialObjectField.getItemCount() == 1) {
+                initialObjectField.select(0);
+            }
+            initialObjectField.addModifyListener(validator);
+
+            Label encodingLabel = new Label(composite, SWT.LEFT);
+            {
+                encodingLabel.setText(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                encodingLabel.setLayoutData(data);
+            }
+            encodingField = new Combo(composite, SWT.BORDER);
+            {
+                GridData data = new GridData();
+                data.horizontalAlignment = GridData.FILL;
+                data.grabExcessHorizontalSpace = true;
+                encodingField.setLayoutData(data);
+            }
+
+            for (String encoding : getEncodings()) {
+                encodingField.add(encoding);
+            }
+
+            encodingField.select(0);
+            encodingField.addModifyListener(validator);
+
+            setPageComplete(validatePage());
+            setControl(composite);
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected ModifyListener validator =
+			new ModifyListener() {
+                public void modifyText(ModifyEvent e) {
+                    setPageComplete(validatePage());
+                }
+            };
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected boolean validatePage() {
+            return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		@Override
+		public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                if (initialObjectField.getItemCount() == 1) {
+                    initialObjectField.clearSelection();
+                    encodingField.setFocus();
+                }
+                else {
+                    encodingField.clearSelection();
+                    initialObjectField.setFocus();
+                }
+            }
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getInitialObjectName() {
+            String label = initialObjectField.getText();
+
+            for (String name : getInitialObjectNames()) {
+                if (getLabel(name).equals(label)) {
+                    return name;
+                }
+            }
+            return null;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		public String getEncoding() {
+            return encodingField.getText();
+        }
+
+		/**
+         * Returns the label for the specified type name.
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected String getLabel(String typeName) {
+            try {
+                return ResourcelandscapeEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+            }
+            catch(MissingResourceException mre) {
+                ResourcelandscapeEditorPlugin.INSTANCE.log(mre);
+            }
+            return typeName;
+        }
+
+		/**
+         * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+         * @generated
+         */
+		protected Collection<String> getEncodings() {
+            if (encodings == null) {
+                encodings = new ArrayList<String>();
+                for (StringTokenizer stringTokenizer = new StringTokenizer(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+                    encodings.add(stringTokenizer.nextToken());
+                }
+            }
+            return encodings;
+        }
+	}
+
+	/**
+     * The framework calls this to create the contents of the wizard.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+		@Override
+	public void addPages() {
+        // Create a page, set the title, and the initial model file name.
+        //
+        newFileCreationPage = new ResourcetypeModelWizardNewFileCreationPage("Whatever", selection);
+        newFileCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_label"));
+        newFileCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_description"));
+        newFileCreationPage.setFileName(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+        addPage(newFileCreationPage);
+
+        // Try and get the resource selection to determine a current directory for the file dialog.
+        //
+        if (selection != null && !selection.isEmpty()) {
+            // Get the resource...
+            //
+            Object selectedElement = selection.iterator().next();
+            if (selectedElement instanceof IResource) {
+                // Get the resource parent, if its a file.
+                //
+                IResource selectedResource = (IResource)selectedElement;
+                if (selectedResource.getType() == IResource.FILE) {
+                    selectedResource = selectedResource.getParent();
+                }
+
+                // This gives us a directory...
+                //
+                if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+                    // Set this for the container.
+                    //
+                    newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+                    // Make up a unique new name here.
+                    //
+                    String defaultModelBaseFilename = ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeEditorFilenameDefaultBase");
+                    String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+                    String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+                    for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+                        modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+                    }
+                    newFileCreationPage.setFileName(modelFilename);
+                }
+            }
+        }
+        initialObjectCreationPage = new ResourcetypeModelWizardInitialObjectCreationPage("Whatever2");
+        initialObjectCreationPage.setTitle(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_ResourcetypeModelWizard_label"));
+        initialObjectCreationPage.setDescription(ResourcelandscapeEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+        addPage(initialObjectCreationPage);
+    }
+
+	/**
+     * Get the file from the page.
+     * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+     * @generated
+     */
+	public IFile getModelFile() {
+        return newFileCreationPage.getModelFile();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath b/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/.project b/edu.kit.ipd.descartes.mm.usageprofile.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..086c3eae40acbe6b6a416a3c9fb5617d42190ea6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.usageprofile.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..7f798acb13d655ae1b76090e57f30bb20e6323fe
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.usageprofile.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.usageprofile.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.mm.usageprofile;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties b/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7adf9acc6d9973159ba8eb5c0162949cc73e05b4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branches_ScenarioBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..12d45aab7d83c0303e1a239db655e80d4a3872e2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateBranchUserAction_branchingProbabilities_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..18c3881224685be21357329b46c6eea9b54bfdc5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateCallParameterSetting_value_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..00da844bb39721a6b117d055c12bde522647dba5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateClosedWorkloadType_thinkTime_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4d51bba34adc9ada6a22ace37b4172e4dc00d013
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateDelayUserAction_delay_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f768689d3de81bb2be5fbe5aab1d1e727a97bffc
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopBodyScenarioBehavior_ScenarioBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..28e491c2adb5300c834607d6889ff3bebba3d15b
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateLoopUserAction_loopIterationCount_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3dcb65c3c2e28aa8ec0e020833f9db583a490c22
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateOpenWorkloadType_interArrivalTime_RandomVariable.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1611c0c15443b0532e4233aa9f1fa6498ba9ab85
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_BranchUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98c2fa25c69c9e1016861b40e26b271e1edc4a95
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_DelayUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4fc15c12ddf119e4ba484ae71c3f64d25b640526
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_LoopUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ddf2faab4622ae12946a48f6388a4e02c79172f5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateScenarioBehavior_actions_SystemCallUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4d1f9adc07271d5b68acf8452a552891f4ae5810
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateSystemCallUserAction_inputParameterSettings_CallParameterSetting.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3ecfb1a47d0ac0dea6b41d771561685ead2d2af2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_imports_Import.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif
new file mode 100644
index 0000000000000000000000000000000000000000..495d02787ca2b1ffc9abd74f72d32e8112084a7d
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageProfile_usageScenarios_UsageScenario.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c2326eff67c36937694a28717e53021d52f9fc72
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_scenarioBehavior_ScenarioBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a674b69c27110f2fc17ff3f0cd277c7e415d8506
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_ClosedWorkloadType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f4bffd128967482a53a248a94b8ae51da10ef745
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/ctool16/CreateUsageScenario_workloadType_OpenWorkloadType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/BranchUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/CallParameterSetting.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..30f0c48da8d4450f7e94a696c4de0a7cc41aa728
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ClosedWorkloadType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/DelayUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/Import.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c673a5200a53ebd68c78c5cdb9d1bd4eaa855afb
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/LoopUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/OpenWorkloadType.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/ScenarioBehavior.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif
new file mode 100644
index 0000000000000000000000000000000000000000..136e3b27269e84a045f9b528614d7dfd316e444c
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/SystemCallUserAction.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageProfile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif
new file mode 100644
index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.edit/icons/full/obj16/UsageScenario.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..27780f920f69d05511a60cdf9c17cea441fbf234
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.properties
@@ -0,0 +1,59 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = UsageProfile Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_UsageProfile_type = Usage Profile
+_UI_UsageScenario_type = Usage Scenario
+_UI_ScenarioBehavior_type = Scenario Behavior
+_UI_WorkloadType_type = Workload Type
+_UI_OpenWorkloadType_type = Open Workload Type
+_UI_ClosedWorkloadType_type = Closed Workload Type
+_UI_AbstractUserAction_type = Abstract User Action
+_UI_LoopUserAction_type = Loop User Action
+_UI_DelayUserAction_type = Delay User Action
+_UI_BranchUserAction_type = Branch User Action
+_UI_SystemCallUserAction_type = System Call User Action
+_UI_CallParameterSetting_type = Call Parameter Setting
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_UsageProfile_usageScenarios_feature = Usage Scenarios
+_UI_UsageScenario_usageModel_feature = Usage Model
+_UI_UsageScenario_scenarioBehavior_feature = Scenario Behavior
+_UI_UsageScenario_workloadType_feature = Workload Type
+_UI_ScenarioBehavior_system_feature = System
+_UI_ScenarioBehavior_actions_feature = Actions
+_UI_WorkloadType_usageScenario_feature = Usage Scenario
+_UI_OpenWorkloadType_interArrivalTime_feature = Inter Arrival Time
+_UI_ClosedWorkloadType_population_feature = Population
+_UI_ClosedWorkloadType_thinkTime_feature = Think Time
+_UI_AbstractUserAction_parentScenarioBehavior_feature = Parent Scenario Behavior
+_UI_LoopUserAction_loopBodyScenarioBehavior_feature = Loop Body Scenario Behavior
+_UI_LoopUserAction_loopIterationCount_feature = Loop Iteration Count
+_UI_DelayUserAction_delay_feature = Delay
+_UI_BranchUserAction_branches_feature = Branches
+_UI_BranchUserAction_branchingProbabilities_feature = Branching Probabilities
+_UI_SystemCallUserAction_providingRole_feature = Providing Role
+_UI_SystemCallUserAction_signature_feature = Signature
+_UI_SystemCallUserAction_inputParameterSettings_feature = Input Parameter Settings
+_UI_CallParameterSetting_name_feature = Name
+_UI_CallParameterSetting_characterization_feature = Characterization
+_UI_CallParameterSetting_value_feature = Value
+_UI_Unknown_feature = Unspecified
+
+_UI_Import_type = Import
+_UI_UsageProfile_imports_feature = Imports
+_UI_Import_importURI_feature = Import URI
+_UI_Import_usageprofile_feature = Usageprofile
+_UI_UsageProfile_system_feature = System
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..859282ac13cf3b8138a1706ef144f6181944b8a7
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/plugin.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated usageprofile -->
+      <factory
+            uri="http://www.descartes-research.net/metamodel/usageprofile/0.1"
+            class="edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml b/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c657c4cd5e77d5de7b37c9704db1be0bef218a4e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.usageprofile.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c7a5aaddbb4e1fe1a1a4454f72f5fea49d70785b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/AbstractUserActionItemProvider.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+import edu.kit.ipd.descartes.mm.usageprofile.AbstractUserAction;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.AbstractUserAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractUserActionItemProvider 
+	extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AbstractUserActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_AbstractUserAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a06f42f3d07288c6e89f8e6dfbd82caca35c089
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/BranchUserActionItemProvider.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BranchUserActionItemProvider extends AbstractUserActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BranchUserActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHES);
+			childrenFeatures.add(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns BranchUserAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BranchUserAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_BranchUserAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BranchUserAction.class)) {
+			case UsageProfilePackage.BRANCH_USER_ACTION__BRANCHES:
+			case UsageProfilePackage.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHES,
+				 UsageProfileFactory.eINSTANCE.createScenarioBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.BRANCH_USER_ACTION__BRANCHING_PROBABILITIES,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..89dcd26ffaaa95b5da84be868dcfb4f969183642
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/CallParameterSettingItemProvider.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CallParameterSettingItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CallParameterSettingItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addCharacterizationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameterSetting_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameterSetting_name_feature", "_UI_CallParameterSetting_type"),
+				 UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Characterization feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCharacterizationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_CallParameterSetting_characterization_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_CallParameterSetting_characterization_feature", "_UI_CallParameterSetting_type"),
+				 UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__CHARACTERIZATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns CallParameterSetting.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CallParameterSetting"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CallParameterSetting)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_CallParameterSetting_type") :
+			getString("_UI_CallParameterSetting_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CallParameterSetting.class)) {
+			case UsageProfilePackage.CALL_PARAMETER_SETTING__NAME:
+			case UsageProfilePackage.CALL_PARAMETER_SETTING__CHARACTERIZATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case UsageProfilePackage.CALL_PARAMETER_SETTING__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.CALL_PARAMETER_SETTING__VALUE,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c27ad6440e4a7a4465b0df83d9a4ea48485f022f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ClosedWorkloadTypeItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.math.BigInteger;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ClosedWorkloadTypeItemProvider extends WorkloadTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ClosedWorkloadTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPopulationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Population feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPopulationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ClosedWorkloadType_population_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ClosedWorkloadType_population_feature", "_UI_ClosedWorkloadType_type"),
+				 UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__POPULATION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__THINK_TIME);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ClosedWorkloadType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ClosedWorkloadType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		BigInteger labelValue = ((ClosedWorkloadType)object).getPopulation();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_ClosedWorkloadType_type") :
+			getString("_UI_ClosedWorkloadType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ClosedWorkloadType.class)) {
+			case UsageProfilePackage.CLOSED_WORKLOAD_TYPE__POPULATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case UsageProfilePackage.CLOSED_WORKLOAD_TYPE__THINK_TIME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.CLOSED_WORKLOAD_TYPE__THINK_TIME,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4c658695f82f5f5028f3ce9b8520d9d77d02954
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/DelayUserActionItemProvider.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DelayUserActionItemProvider extends AbstractUserActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DelayUserActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.DELAY_USER_ACTION__DELAY);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns DelayUserAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DelayUserAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_DelayUserAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DelayUserAction.class)) {
+			case UsageProfilePackage.DELAY_USER_ACTION__DELAY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.DELAY_USER_ACTION__DELAY,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3acd27d1483376d872028938a7d0f2e90e690a7f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ImportItemProvider.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.usageprofile.Import;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.Import} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImportItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ImportItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addImportURIPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Import URI feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImportURIPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Import_importURI_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Import_importURI_feature", "_UI_Import_type"),
+				 UsageProfilePackage.Literals.IMPORT__IMPORT_URI,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns Import.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Import"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Import)object).getImportURI();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Import_type") :
+			getString("_UI_Import_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Import.class)) {
+			case UsageProfilePackage.IMPORT__IMPORT_URI:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6c780ec6f58f2811f6cfb9bb61d42c62fe0f0f38
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/LoopUserActionItemProvider.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoopUserActionItemProvider extends AbstractUserActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LoopUserActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR);
+			childrenFeatures.add(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_ITERATION_COUNT);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LoopUserAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LoopUserAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LoopUserAction_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LoopUserAction.class)) {
+			case UsageProfilePackage.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR:
+			case UsageProfilePackage.LOOP_USER_ACTION__LOOP_ITERATION_COUNT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_BODY_SCENARIO_BEHAVIOR,
+				 UsageProfileFactory.eINSTANCE.createScenarioBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.LOOP_USER_ACTION__LOOP_ITERATION_COUNT,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..0fa03ecd8d4b4b5fab6d138a7efa4eef7e53cea3
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/OpenWorkloadTypeItemProvider.java
@@ -0,0 +1,144 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.FunctionsFactory;
+
+import edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OpenWorkloadTypeItemProvider extends WorkloadTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OpenWorkloadTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns OpenWorkloadType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OpenWorkloadType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_OpenWorkloadType_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(OpenWorkloadType.class)) {
+			case UsageProfilePackage.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.OPEN_WORKLOAD_TYPE__INTER_ARRIVAL_TIME,
+				 FunctionsFactory.eINSTANCE.createRandomVariable()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..39bd2359cecd21a85ba3cfc1b0557e38189e20bb
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/ScenarioBehaviorItemProvider.java
@@ -0,0 +1,185 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScenarioBehaviorItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ScenarioBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns ScenarioBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ScenarioBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ScenarioBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ScenarioBehavior.class)) {
+			case UsageProfilePackage.SCENARIO_BEHAVIOR__ACTIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS,
+				 UsageProfileFactory.eINSTANCE.createLoopUserAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS,
+				 UsageProfileFactory.eINSTANCE.createDelayUserAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS,
+				 UsageProfileFactory.eINSTANCE.createBranchUserAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.SCENARIO_BEHAVIOR__ACTIONS,
+				 UsageProfileFactory.eINSTANCE.createSystemCallUserAction()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ff003d53dc0186f7b8cce1baa34f54f499266d8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/SystemCallUserActionItemProvider.java
@@ -0,0 +1,246 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.core.CorePackage;
+import edu.kit.ipd.descartes.identifier.IdentifierPackage;
+import edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SystemCallUserActionItemProvider extends AbstractUserActionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SystemCallUserActionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addProvidingRolePropertyDescriptor(object);
+			addSignaturePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_id_feature", "_UI_Identifier_type"),
+				 IdentifierPackage.Literals.IDENTIFIER__ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NamedElement_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
+				 CorePackage.Literals.NAMED_ELEMENT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Providing Role feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProvidingRolePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_SystemCallUserAction_providingRole_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_SystemCallUserAction_providingRole_feature", "_UI_SystemCallUserAction_type"),
+				 UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__PROVIDING_ROLE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Signature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSignaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_SystemCallUserAction_signature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_SystemCallUserAction_signature_feature", "_UI_SystemCallUserAction_type"),
+				 UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__SIGNATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns SystemCallUserAction.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SystemCallUserAction"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((SystemCallUserAction)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_SystemCallUserAction_type") :
+			getString("_UI_SystemCallUserAction_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(SystemCallUserAction.class)) {
+			case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__ID:
+			case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case UsageProfilePackage.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.SYSTEM_CALL_USER_ACTION__INPUT_PARAMETER_SETTINGS,
+				 UsageProfileFactory.eINSTANCE.createCallParameterSetting()));
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e9143ddf7572a845dc925ba2210511c3e4faf1e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileEditPlugin.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the UsageProfile edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class UsageProfileEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final UsageProfileEditPlugin INSTANCE = new UsageProfileEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     ApplicationlevelEditPlugin.INSTANCE,
+		     CoreEditPlugin.INSTANCE,
+		     IdentifierEditPlugin.INSTANCE,
+		     ResourcelandscapeEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b5588d942bad4464160dfa3e16a06f722f2bbf5
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfile;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageProfile} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageProfileItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSystemPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the System feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSystemPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_UsageProfile_system_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_UsageProfile_system_feature", "_UI_UsageProfile_type"),
+				 UsageProfilePackage.Literals.USAGE_PROFILE__SYSTEM,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.USAGE_PROFILE__IMPORTS);
+			childrenFeatures.add(UsageProfilePackage.Literals.USAGE_PROFILE__USAGE_SCENARIOS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns UsageProfile.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/UsageProfile"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((UsageProfile)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_UsageProfile_type") :
+			getString("_UI_UsageProfile_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(UsageProfile.class)) {
+			case UsageProfilePackage.USAGE_PROFILE__IMPORTS:
+			case UsageProfilePackage.USAGE_PROFILE__USAGE_SCENARIOS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.USAGE_PROFILE__IMPORTS,
+				 UsageProfileFactory.eINSTANCE.createImport()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.USAGE_PROFILE__USAGE_SCENARIOS,
+				 UsageProfileFactory.eINSTANCE.createUsageScenario()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b39ded59c8f24681ac2ff945cd45912cc6998fc
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageProfileItemProviderAdapterFactory.java
@@ -0,0 +1,440 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+import edu.kit.ipd.descartes.mm.usageprofile.util.UsageProfileAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageProfileItemProviderAdapterFactory extends UsageProfileAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.UsageProfile} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageProfileItemProvider usageProfileItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageProfile}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createUsageProfileAdapter() {
+		if (usageProfileItemProvider == null) {
+			usageProfileItemProvider = new UsageProfileItemProvider(this);
+		}
+
+		return usageProfileItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageScenarioItemProvider usageScenarioItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createUsageScenarioAdapter() {
+		if (usageScenarioItemProvider == null) {
+			usageScenarioItemProvider = new UsageScenarioItemProvider(this);
+		}
+
+		return usageScenarioItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ScenarioBehaviorItemProvider scenarioBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ScenarioBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createScenarioBehaviorAdapter() {
+		if (scenarioBehaviorItemProvider == null) {
+			scenarioBehaviorItemProvider = new ScenarioBehaviorItemProvider(this);
+		}
+
+		return scenarioBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.Import} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ImportItemProvider importItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.Import}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createImportAdapter() {
+		if (importItemProvider == null) {
+			importItemProvider = new ImportItemProvider(this);
+		}
+
+		return importItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OpenWorkloadTypeItemProvider openWorkloadTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.OpenWorkloadType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createOpenWorkloadTypeAdapter() {
+		if (openWorkloadTypeItemProvider == null) {
+			openWorkloadTypeItemProvider = new OpenWorkloadTypeItemProvider(this);
+		}
+
+		return openWorkloadTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ClosedWorkloadTypeItemProvider closedWorkloadTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.ClosedWorkloadType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createClosedWorkloadTypeAdapter() {
+		if (closedWorkloadTypeItemProvider == null) {
+			closedWorkloadTypeItemProvider = new ClosedWorkloadTypeItemProvider(this);
+		}
+
+		return closedWorkloadTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LoopUserActionItemProvider loopUserActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.LoopUserAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLoopUserActionAdapter() {
+		if (loopUserActionItemProvider == null) {
+			loopUserActionItemProvider = new LoopUserActionItemProvider(this);
+		}
+
+		return loopUserActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DelayUserActionItemProvider delayUserActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.DelayUserAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDelayUserActionAdapter() {
+		if (delayUserActionItemProvider == null) {
+			delayUserActionItemProvider = new DelayUserActionItemProvider(this);
+		}
+
+		return delayUserActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BranchUserActionItemProvider branchUserActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.BranchUserAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBranchUserActionAdapter() {
+		if (branchUserActionItemProvider == null) {
+			branchUserActionItemProvider = new BranchUserActionItemProvider(this);
+		}
+
+		return branchUserActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemCallUserActionItemProvider systemCallUserActionItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.SystemCallUserAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSystemCallUserActionAdapter() {
+		if (systemCallUserActionItemProvider == null) {
+			systemCallUserActionItemProvider = new SystemCallUserActionItemProvider(this);
+		}
+
+		return systemCallUserActionItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CallParameterSettingItemProvider callParameterSettingItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.CallParameterSetting}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCallParameterSettingAdapter() {
+		if (callParameterSettingItemProvider == null) {
+			callParameterSettingItemProvider = new CallParameterSettingItemProvider(this);
+		}
+
+		return callParameterSettingItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (usageProfileItemProvider != null) usageProfileItemProvider.dispose();
+		if (usageScenarioItemProvider != null) usageScenarioItemProvider.dispose();
+		if (scenarioBehaviorItemProvider != null) scenarioBehaviorItemProvider.dispose();
+		if (importItemProvider != null) importItemProvider.dispose();
+		if (openWorkloadTypeItemProvider != null) openWorkloadTypeItemProvider.dispose();
+		if (closedWorkloadTypeItemProvider != null) closedWorkloadTypeItemProvider.dispose();
+		if (loopUserActionItemProvider != null) loopUserActionItemProvider.dispose();
+		if (delayUserActionItemProvider != null) delayUserActionItemProvider.dispose();
+		if (branchUserActionItemProvider != null) branchUserActionItemProvider.dispose();
+		if (systemCallUserActionItemProvider != null) systemCallUserActionItemProvider.dispose();
+		if (callParameterSettingItemProvider != null) callParameterSettingItemProvider.dispose();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..7f6487c9eab4a4d585cb08c8d45919aacd532345
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/UsageScenarioItemProvider.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageScenario;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.UsageScenario} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageScenarioItemProvider extends EntityItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageScenarioItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(UsageProfilePackage.Literals.USAGE_SCENARIO__SCENARIO_BEHAVIOR);
+			childrenFeatures.add(UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns UsageScenario.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/UsageScenario"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((UsageScenario)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_UsageScenario_type") :
+			getString("_UI_UsageScenario_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(UsageScenario.class)) {
+			case UsageProfilePackage.USAGE_SCENARIO__SCENARIO_BEHAVIOR:
+			case UsageProfilePackage.USAGE_SCENARIO__WORKLOAD_TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.USAGE_SCENARIO__SCENARIO_BEHAVIOR,
+				 UsageProfileFactory.eINSTANCE.createScenarioBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE,
+				 UsageProfileFactory.eINSTANCE.createOpenWorkloadType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UsageProfilePackage.Literals.USAGE_SCENARIO__WORKLOAD_TYPE,
+				 UsageProfileFactory.eINSTANCE.createClosedWorkloadType()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..2009542b60d3fa0935313b91343a75ff3a7037bf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.edit/src/edu/kit/ipd/descartes/mm/usageprofile/provider/WorkloadTypeItemProvider.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.mm.usageprofile.WorkloadType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class WorkloadTypeItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WorkloadTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_WorkloadType_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return UsageProfileEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath b/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/.project b/edu.kit.ipd.descartes.mm.usageprofile.editor/.project
new file mode 100644
index 0000000000000000000000000000000000000000..fd2eb55f2ff7694f05ade3f4dbc358f815f47f3b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.mm.usageprofile.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..f7a9eb5a2a5ad4e00c0b9ad8a5884d72e9dabc6a
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.mm.usageprofile.editor;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditorPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.mm.usageprofile.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.usageprofile.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.applicationlevel.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.mm.resourcelandscape.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties b/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..13bc17630acff8a0efe9b21294ce973c6266b58e
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..96a88f811b7bbc6609bc46463126b55cc7651542
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/obj16/UsageProfileModelFile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif
new file mode 100644
index 0000000000000000000000000000000000000000..426010601a6d829b0653876d6097dadec6e4d0e3
Binary files /dev/null and b/edu.kit.ipd.descartes.mm.usageprofile.editor/icons/full/wizban/NewUsageProfile.gif differ
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..474cfdee495da0e8a0753f27db2059d83932c2a6
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.properties
@@ -0,0 +1,54 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = UsageProfile Editor
+providerName = www.example.org
+
+_UI_UsageProfileEditor_menu = &Usage Profile Editor
+
+_UI_CreateChild_menu_item = &New Child
+_UI_CreateSibling_menu_item = N&ew Sibling
+
+_UI_ShowPropertiesView_menu_item = Show &Properties View
+_UI_RefreshViewer_menu_item = &Refresh
+
+_UI_SelectionPage_label = Selection
+_UI_ParentPage_label = Parent
+_UI_ListPage_label = List
+_UI_TreePage_label = Tree
+_UI_TablePage_label = Table
+_UI_TreeWithColumnsPage_label = Tree with Columns
+_UI_ObjectColumn_label = Object
+_UI_SelfColumn_label = Self
+
+_UI_NoObjectSelected = Selected Nothing
+_UI_SingleObjectSelected = Selected Object: {0}
+_UI_MultiObjectSelected = Selected {0} Objects
+
+_UI_OpenEditorError_label = Open Editor
+
+_UI_Wizard_category = DML
+_UI_Wizard_usageprofile_category = Usage Profile
+
+_UI_CreateModelError_message = Problems encountered in file "{0}"
+
+_UI_UsageProfileModelWizard_label = Usage Profile Model
+_UI_UsageProfileModelWizard_description = Create a new Usage Profile model
+
+_UI_UsageProfileEditor_label = Usage Profile Model Editor
+
+_UI_UsageProfileEditorFilenameDefaultBase = My
+_UI_UsageProfileEditorFilenameExtensions = usageprofile
+
+_UI_Wizard_label = New
+
+_WARN_FilenameExtension = The file name must end in ''.{0}''
+_WARN_FilenameExtensions = The file name must have one of the following extensions: {0}
+
+_UI_ModelObject = &Model Object
+_UI_XMLEncoding = &XML Encoding
+_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
+_UI_Wizard_initial_object_description = Select a model object to create
+
+_UI_FileConflict_label = File Conflict
+_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
+
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a5c7897ba2a769d4e4c627b96f7f68363e8c4ec1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/plugin.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated usageprofile -->
+      <category
+            id="tools.descartes.dml.category"
+            name="%_UI_Wizard_category"/>
+      <category
+            id="tools.descartes.dml.usageprofile.category"
+            name="%_UI_Wizard_usageprofile_category"
+            parentCategory="tools.descartes.dml.category">
+      </category>
+      <wizard
+            id="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileModelWizardID"
+            name="%_UI_UsageProfileModelWizard_label"
+            class="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileModelWizard"
+            category="tools.descartes.dml.category/tools.descartes.dml.usageprofile.category"
+            icon="icons/full/obj16/UsageProfileModelFile.gif">
+         <description>%_UI_UsageProfileModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated usageprofile -->
+      <editor
+            id="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditorID"
+            name="%_UI_UsageProfileEditor_label"
+            icon="icons/full/obj16/UsageProfileModelFile.gif"
+            extensions="usageprofile"
+            class="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileEditor"
+            contributorClass="edu.kit.ipd.descartes.mm.usageprofile.presentation.UsageProfileActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml b/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..352f4b7bd44b56c1fbd10c4e74a56074663b80f1
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.mm.usageprofile.editor</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a16ddd8f6a190d576e022d43456c184fbce5e85
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileActionBarContributor.java
@@ -0,0 +1,424 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the UsageProfile model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageProfileActionBarContributor
+	extends EditingDomainActionBarContributor
+	implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+		new Action(UsageProfileEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+			@Override
+			public void run() {
+				try {
+					getPage().showView("org.eclipse.ui.views.PropertySheet");
+				}
+				catch (PartInitException exception) {
+					UsageProfileEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+		new Action(UsageProfileEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+			@Override
+			public boolean isEnabled() {
+				return activeEditorPart instanceof IViewerProvider;
+			}
+
+			@Override
+			public void run() {
+				if (activeEditorPart instanceof IViewerProvider) {
+					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
+					if (viewer != null) {
+						viewer.refresh();
+					}
+				}
+			}
+		};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("usageprofile-settings"));
+		toolBarManager.add(new Separator("usageprofile-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditor_menu"), "edu.kit.ipd.descartes.mm.usageprofileMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+			(new IMenuListener() {
+				 public void menuAboutToShow(IMenuManager menuManager) {
+					 menuManager.updateAll(true);
+				 }
+			 });
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+			Object object = ((IStructuredSelection)selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+		
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem)contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(UsageProfileEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java
new file mode 100644
index 0000000000000000000000000000000000000000..5069ed2b5134022ba63d8f66202d58d4f133c0bf
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditor.java
@@ -0,0 +1,1843 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+
+import org.eclipse.jface.util.LocalSelectionTransfer;
+
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.custom.CTabFolder;
+
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.swt.layout.FillLayout;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.ui.dialogs.SaveAsDialog;
+
+import org.eclipse.ui.ide.IGotoMarker;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+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.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+
+import edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.core.provider.CoreItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.functions.provider.FunctionsItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.parameterdependencies.provider.ParameterdependenciesItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.repository.provider.RepositoryItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.servicebehavior.provider.ServicebehaviorItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.system.provider.SystemItemProviderAdapterFactory;
+
+import edu.kit.ipd.descartes.mm.resourcetype.provider.ResourcetypeItemProviderAdapterFactory;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+
+/**
+ * This is an example of a UsageProfile model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageProfileEditor
+	extends MultiPageEditorPart
+	implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IPartListener partListener =
+		new IPartListener() {
+			public void partActivated(IWorkbenchPart p) {
+				if (p instanceof ContentOutline) {
+					if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) {
+						getActionBarContributor().setActiveEditor(UsageProfileEditor.this);
+
+						setCurrentViewer(contentOutlineViewer);
+					}
+				}
+				else if (p instanceof PropertySheet) {
+					if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) {
+						getActionBarContributor().setActiveEditor(UsageProfileEditor.this);
+						handleActivate();
+					}
+				}
+				else if (p == UsageProfileEditor.this) {
+					handleActivate();
+				}
+			}
+			public void partBroughtToTop(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partClosed(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partDeactivated(IWorkbenchPart p) {
+				// Ignore.
+			}
+			public void partOpened(IWorkbenchPart p) {
+				// Ignore.
+			}
+		};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+		new EContentAdapter() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				if (notification.getNotifier() instanceof Resource) {
+					switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource)notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										 public void run() {
+											 updateProblemIndication();
+										 }
+									 });
+							}
+							break;
+						}
+					}
+				}
+				else {
+					super.notifyChanged(notification);
+				}
+			}
+
+			@Override
+			protected void setTarget(Resource target) {
+				basicSetTarget(target);
+			}
+
+			@Override
+			protected void unsetTarget(Resource target) {
+				basicUnsetTarget(target);
+				resourceToDiagnosticMap.remove(target);
+				if (updateProblemIndication) {
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+		};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+		new IResourceChangeListener() {
+			public void resourceChanged(IResourceChangeEvent event) {
+				IResourceDelta delta = event.getDelta();
+				try {
+					class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+						protected ResourceSet resourceSet = editingDomain.getResourceSet();
+						protected Collection<Resource> changedResources = new ArrayList<Resource>();
+						protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+						public boolean visit(IResourceDelta delta) {
+							if (delta.getResource().getType() == IResource.FILE) {
+								if (delta.getKind() == IResourceDelta.REMOVED ||
+								    delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+									Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+									if (resource != null) {
+										if (delta.getKind() == IResourceDelta.REMOVED) {
+											removedResources.add(resource);
+										}
+										else if (!savedResources.remove(resource)) {
+											changedResources.add(resource);
+										}
+									}
+								}
+								return false;
+							}
+
+							return true;
+						}
+
+						public Collection<Resource> getChangedResources() {
+							return changedResources;
+						}
+
+						public Collection<Resource> getRemovedResources() {
+							return removedResources;
+						}
+					}
+
+					final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+					delta.accept(visitor);
+
+					if (!visitor.getRemovedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 removedResources.addAll(visitor.getRemovedResources());
+									 if (!isDirty()) {
+										 getSite().getPage().closeEditor(UsageProfileEditor.this, false);
+									 }
+								 }
+							 });
+					}
+
+					if (!visitor.getChangedResources().isEmpty()) {
+						getSite().getShell().getDisplay().asyncExec
+							(new Runnable() {
+								 public void run() {
+									 changedResources.addAll(visitor.getChangedResources());
+									 if (getSite().getPage().getActiveEditor() == UsageProfileEditor.this) {
+										 handleActivate();
+									 }
+								 }
+							 });
+					}
+				}
+				catch (CoreException exception) {
+					UsageProfileEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+		};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+		  editingDomain.getResourceToReadOnlyMap().clear();
+
+		  // Refresh any actions that may become enabled or disabled.
+		  //
+		  setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(UsageProfileEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					}
+					catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+				new BasicDiagnostic
+					(Diagnostic.OK,
+					 "edu.kit.ipd.descartes.mm.usageprofile.editor",
+					 0,
+					 null,
+					 new Object [] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				}
+				catch (PartInitException exception) {
+					UsageProfileEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					}
+					catch (CoreException exception) {
+						UsageProfileEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return
+			MessageDialog.openQuestion
+				(getSite().getShell(),
+				 getString("_UI_FileConflict_label"),
+				 getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new UsageProfileItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new FunctionsItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ParameterdependenciesItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new RepositoryItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ServicebehaviorItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new SystemItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new IdentifierItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ResourcetypeItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+			(new CommandStackListener() {
+				 public void commandStackChanged(final EventObject event) {
+					 getContainer().getDisplay().asyncExec
+						 (new Runnable() {
+							  public void run() {
+								  firePropertyChange(IEditorPart.PROP_DIRTY);
+
+								  // Try to select the affected objects.
+								  //
+								  Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
+								  if (mostRecentCommand != null) {
+									  setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+								  }
+								  for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) {
+									  PropertySheetPage propertySheetPage = i.next();
+									  if (propertySheetPage.getControl().isDisposed()) {
+										  i.remove();
+									  }
+									  else {
+										  propertySheetPage.refresh();
+									  }
+								  }
+							  }
+						  });
+				 }
+			 });
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+			@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+				new Runnable() {
+					public void run() {
+						// Try to select the items in the current content viewer of the editor.
+						//
+						if (currentViewer != null) {
+							currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+						}
+					}
+				};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain}
+	 * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object [] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+					new ISelectionChangedListener() {
+						// This just notifies those things that are affected by the section.
+						//
+						public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+							setSelection(selectionChangedEvent.getSelection());
+						}
+					};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu= contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		}
+		catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource,  analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.usageprofile.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object [] { exception == null ? (Object)resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return
+				new BasicDiagnostic
+					(Diagnostic.ERROR,
+					 "edu.kit.ipd.descartes.mm.usageprofile.editor",
+					 0,
+					 getString("_UI_CreateModelError_message", resource.getURI()),
+					 new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer)viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							Tree tree = new Tree(composite, SWT.MULTI);
+							TreeViewer newTreeViewer = new TreeViewer(tree);
+							return newTreeViewer;
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer)viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new ListViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer)viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer)viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TableViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer)viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String [] {"a", "b"});
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+					new ViewerPane(getSite().getPage(), UsageProfileEditor.this) {
+						@Override
+						public Viewer createViewer(Composite composite) {
+							return new TreeViewer(composite);
+						}
+						@Override
+						public void requestActivation() {
+							super.requestActivation();
+							setCurrentViewerPane(this);
+						}
+					};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer)viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String [] {"a", "b"});
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					 public void run() {
+						 setActivePage(0);
+					 }
+				 });
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+			(new ControlAdapter() {
+				boolean guard = false;
+				@Override
+				public void controlResized(ControlEvent event) {
+					if (!guard) {
+						guard = true;
+						hideTabs();
+						guard = false;
+					}
+				}
+			 });
+
+		getSite().getShell().getDisplay().asyncExec
+			(new Runnable() {
+				 public void run() {
+					 updateProblemIndication();
+				 }
+			 });
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder)getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+					  // Select the root object in the view.
+					  //
+					  contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+				(new ISelectionChangedListener() {
+					 // This ensures that we handle selections correctly.
+					 //
+					 public void selectionChanged(SelectionChangedEvent event) {
+						 handleContentOutlineSelection(event.getSelection());
+					 }
+				 });
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+			new ExtendedPropertySheetPage(editingDomain) {
+				@Override
+				public void setSelectionToViewer(List<?> selection) {
+					UsageProfileEditor.this.setSelectionToViewer(selection);
+					UsageProfileEditor.this.setFocus();
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+			new WorkspaceModifyOperation() {
+				// This is the method that gets invoked when the operation runs.
+				//
+				@Override
+				public void execute(IProgressMonitor monitor) {
+					// Save the resources to the file system.
+					//
+					boolean first = true;
+					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+							try {
+								long timeStamp = resource.getTimeStamp();
+								resource.save(saveOptions);
+								if (resource.getTimeStamp() != timeStamp) {
+									savedResources.add(resource);
+								}
+							}
+							catch (Exception exception) {
+								resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+							}
+							first = false;
+						}
+					}
+				}
+			};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		}
+		catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			UsageProfileEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		}
+		catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+			getActionBars().getStatusLineManager() != null ?
+				getActionBars().getStatusLineManager().getProgressMonitor() :
+				new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+			contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection)selection).toList();
+				switch (collection.size()) {
+					case 0: {
+						statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+						break;
+					}
+					case 1: {
+						String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+						statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+						break;
+					}
+					default: {
+						statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+						break;
+					}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return UsageProfileEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return UsageProfileEditorPlugin.INSTANCE.getString(key, new Object [] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bd09d5b7ffe984eee835baaabc060c27cdc642f
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileEditorPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.presentation;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import edu.kit.ipd.descartes.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+
+import edu.kit.ipd.descartes.mm.resourcelandscape.provider.ResourcelandscapeEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the UsageProfile editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class UsageProfileEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final UsageProfileEditorPlugin INSTANCE = new UsageProfileEditorPlugin();
+	
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UsageProfileEditorPlugin() {
+		super
+			(new ResourceLocator [] {
+				ApplicationlevelEditPlugin.INSTANCE,
+				CoreEditPlugin.INSTANCE,
+				IdentifierEditPlugin.INSTANCE,
+				ResourcelandscapeEditPlugin.INSTANCE,
+			});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+	
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+	
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+	
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java
new file mode 100644
index 0000000000000000000000000000000000000000..8871ab68bb83c3cf25aa2d0a3507d8e37231569b
--- /dev/null
+++ b/edu.kit.ipd.descartes.mm.usageprofile.editor/src/edu/kit/ipd/descartes/mm/usageprofile/presentation/UsageProfileModelWizard.java
@@ -0,0 +1,628 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.mm.usageprofile.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.CommonPlugin;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.swt.SWT;
+
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.ModifyEvent;
+
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfileFactory;
+import edu.kit.ipd.descartes.mm.usageprofile.UsageProfilePackage;
+import edu.kit.ipd.descartes.mm.usageprofile.provider.UsageProfileEditPlugin;
+
+
+import org.eclipse.core.runtime.Path;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UsageProfileModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+		Collections.unmodifiableList(Arrays.asList(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+		UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageProfilePackage usageProfilePackage = UsageProfilePackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageProfileFactory usageProfileFactory = usageProfilePackage.getUsageProfileFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageProfileModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UsageProfileModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(UsageProfileEditorPlugin.INSTANCE.getImage("full/wizban/NewUsageProfile")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : usageProfilePackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass)eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass)usageProfilePackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = usageProfileFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					@Override
+					protected void execute(IProgressMonitor progressMonitor) {
+						try {
+							// Create a resource set
+							//
+							ResourceSet resourceSet = new ResourceSetImpl();
+
+							// Get the URI of the model file.
+							//
+							URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+							// Create a resource for this file.
+							//
+							Resource resource = resourceSet.createResource(fileURI);
+
+							// Add the initial model object to the contents.
+							//
+							EObject rootObject = createInitialModel();
+							if (rootObject != null) {
+								resource.getContents().add(rootObject);
+							}
+
+							// Save the contents of the resource to the file system.
+							//
+							Map<Object, Object> options = new HashMap<Object, Object>();
+							options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+							resource.save(options);
+						}
+						catch (Exception exception) {
+							UsageProfileEditorPlugin.INSTANCE.log(exception);
+						}
+						finally {
+							progressMonitor.done();
+						}
+					}
+				};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+					(new Runnable() {
+						 public void run() {
+							 ((ISetSelectionTarget)activePart).selectReveal(targetSelection);
+						 }
+					 });
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+					(new FileEditorInput(modelFile),
+					 workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());					 	 
+			}
+			catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), UsageProfileEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		}
+		catch (Exception exception) {
+			UsageProfileEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class UsageProfileModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public UsageProfileModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(UsageProfileEditorPlugin.INSTANCE.getString(key, new Object [] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public class UsageProfileModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public UsageProfileModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE); {
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(UsageProfileEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(UsageProfileEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected ModifyListener validator =
+			new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					setPageComplete(validatePage());
+				}
+			};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return UsageProfileEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			}
+			catch(MissingResourceException mre) {
+				UsageProfileEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(UsageProfileEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens(); ) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+		@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new UsageProfileModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_label"));
+		newFileCreationPage.setDescription(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_description"));
+		newFileCreationPage.setFileName(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource)selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new UsageProfileModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(UsageProfileEditorPlugin.INSTANCE.getString("_UI_UsageProfileModelWizard_label"));
+		initialObjectCreationPage.setDescription(UsageProfileEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath b/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..121e527a9386dd66bdd0ec178fc2d28d734b82f8
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/.project b/edu.kit.ipd.descartes.perfdatarepo.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..d1c05f59e557cb20684b3c333db23926bec04b27
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>edu.kit.ipd.descartes.perfdatarepo.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF b/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..36b0a22c995a51f3ae7da5e9374ca8e9a3b8da0f
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: edu.kit.ipd.descartes.perfdatarepo.edit;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: edu.kit.ipd.descartes.perfdatarepo.provider
+Require-Bundle: org.eclipse.core.runtime,
+ edu.kit.ipd.descartes.perfdatarepo;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.core;visibility:=reexport,
+ edu.kit.ipd.descartes.core.edit;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier;visibility:=reexport,
+ edu.kit.ipd.descartes.identifier.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties b/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f49dbb43fe1c660ba5a28e2b7e1537d06469665d
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/build.properties
@@ -0,0 +1,10 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f420604f4047de6fb03edd17e3cfa3c7b3b2c6c5
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_impactHistory_Impact.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..08f15c5851e003aa21471cc9e59ddd3b43beedce
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_metricTypes_MetricType.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif
new file mode 100644
index 0000000000000000000000000000000000000000..8b6df378675bf2d7a741c5933395bafc19999544
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreatePerformanceDataRepository_resultHistory_Result.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a340d5744ab5325b89ca5706ed316ebf4219ae3
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/ctool16/CreateResult_metricValues_MetricValue.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cb1755a712505aeaaa447d9b1cc5940e602f87b6
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Impact.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7c2aaac84ee6ea15757df499505e9aa0de4288f9
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricType.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/MetricValue.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif
new file mode 100644
index 0000000000000000000000000000000000000000..338fb8d9a728b682e398849d2038959d01b4e0f2
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/PerformanceDataRepository.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e4bc22dd17e82d9350631bd55ad9671957cdaf50
Binary files /dev/null and b/edu.kit.ipd.descartes.perfdatarepo.edit/icons/full/obj16/Result.gif differ
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8b7c3e42ebd1bbdc6b2b0331be87115b95711343
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.properties
@@ -0,0 +1,34 @@
+# Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+
+pluginName = Perfdatarepo Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_PerformanceDataRepository_type = Performance Data Repository
+_UI_Result_type = Result
+_UI_MetricType_type = Metric Type
+_UI_MetricValue_type = Metric Value
+_UI_Impact_type = Impact
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_PerformanceDataRepository_resultHistory_feature = Result History
+_UI_PerformanceDataRepository_metricTypes_feature = Metric Types
+_UI_PerformanceDataRepository_impactHistory_feature = Impact History
+_UI_Result_timestamp_feature = Timestamp
+_UI_Result_metricValues_feature = Metric Values
+_UI_MetricValue_metricType_feature = Metric Type
+_UI_MetricValue_value_feature = Value
+_UI_Impact_before_feature = Before
+_UI_Impact_after_feature = After
+_UI_Unknown_feature = Unspecified
+
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5905d65320b3647d61b4ea564ceb52109984225a
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <factory
+            uri="http://www.descartes-research.net/metamodel/perfdata/0.1"
+            class="edu.kit.ipd.descartes.perfdatarepo.provider.PerfdatarepoItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml b/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10e1ece9b58c337700a32ee0a838b0ada54bf5c7
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>edu.kit.ipd.descartes.perfdatarepo.edit</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>edu.kit.ipd.descartes.mm</groupId>
+  	<artifactId>edu.kit.ipd.descartes.releng</artifactId>
+  	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../../releng/edu.kit.ipd.descartes.releng</relativePath>
+  </parent>
+</project>
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c17eb91857ab71fa6d4526c6a648aa99db7134d4
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ImpactItemProvider.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Impact} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ImpactItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ImpactItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addBeforePropertyDescriptor(object);
+            addAfterPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Before feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addBeforePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Impact_before_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Impact_before_feature", "_UI_Impact_type"),
+                 PerfdatarepoPackage.Literals.IMPACT__BEFORE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the After feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAfterPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Impact_after_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Impact_after_feature", "_UI_Impact_type"),
+                 PerfdatarepoPackage.Literals.IMPACT__AFTER,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns Impact.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Impact"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Impact)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Impact_type") :
+            getString("_UI_Impact_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return PerfdatarepoEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f52693968b103f2562ce5001c53ada9d6734775f
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricTypeItemProvider.java
@@ -0,0 +1,126 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.perfdatarepo.MetricType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MetricTypeItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public MetricTypeItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This returns MetricType.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/MetricType"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((MetricType)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_MetricType_type") :
+            getString("_UI_MetricType_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return PerfdatarepoEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..15464b07be488bcb75566001489702452d4cbb64
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/MetricValueItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.perfdatarepo.MetricValue;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class MetricValueItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public MetricValueItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addMetricTypePropertyDescriptor(object);
+            addValuePropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Metric Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMetricTypePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_MetricValue_metricType_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_MetricValue_metricType_feature", "_UI_MetricValue_type"),
+                 PerfdatarepoPackage.Literals.METRIC_VALUE__METRIC_TYPE,
+                 true,
+                 false,
+                 true,
+                 null,
+                 null,
+                 null));
+    }
+
+    /**
+     * This adds a property descriptor for the Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addValuePropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_MetricValue_value_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_MetricValue_value_feature", "_UI_MetricValue_type"),
+                 PerfdatarepoPackage.Literals.METRIC_VALUE__VALUE,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This returns MetricValue.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/MetricValue"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((MetricValue)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_MetricValue_type") :
+            getString("_UI_MetricValue_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(MetricValue.class)) {
+            case PerfdatarepoPackage.METRIC_VALUE__VALUE:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return PerfdatarepoEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4794438cc5609b7022f6d3971e590d7fa7b119b
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoEditPlugin.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+import edu.kit.ipd.descartes.core.provider.CoreEditPlugin;
+
+import edu.kit.ipd.descartes.identifier.provider.IdentifierEditPlugin;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Perfdatarepo edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class PerfdatarepoEditPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final PerfdatarepoEditPlugin INSTANCE = new PerfdatarepoEditPlugin();
+
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public PerfdatarepoEditPlugin() {
+        super
+          (new ResourceLocator [] {
+             CoreEditPlugin.INSTANCE,
+             IdentifierEditPlugin.INSTANCE,
+           });
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipsePlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..89882ab99747dd813385dee3c83167616d8751ee
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerfdatarepoItemProviderAdapterFactory.java
@@ -0,0 +1,296 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+import edu.kit.ipd.descartes.perfdatarepo.util.PerfdatarepoAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerfdatarepoItemProviderAdapterFactory extends PerfdatarepoAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+    /**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory parentAdapterFactory;
+
+    /**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+    /**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+    /**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public PerfdatarepoItemProviderAdapterFactory() {
+        supportedTypes.add(IEditingDomainItemProvider.class);
+        supportedTypes.add(IStructuredItemContentProvider.class);
+        supportedTypes.add(ITreeItemContentProvider.class);
+        supportedTypes.add(IItemLabelProvider.class);
+        supportedTypes.add(IItemPropertySource.class);
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected PerformanceDataRepositoryItemProvider performanceDataRepositoryItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createPerformanceDataRepositoryAdapter() {
+        if (performanceDataRepositoryItemProvider == null) {
+            performanceDataRepositoryItemProvider = new PerformanceDataRepositoryItemProvider(this);
+        }
+
+        return performanceDataRepositoryItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.Result} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ResultItemProvider resultItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Result}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createResultAdapter() {
+        if (resultItemProvider == null) {
+            resultItemProvider = new ResultItemProvider(this);
+        }
+
+        return resultItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.MetricType} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MetricTypeItemProvider metricTypeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createMetricTypeAdapter() {
+        if (metricTypeItemProvider == null) {
+            metricTypeItemProvider = new MetricTypeItemProvider(this);
+        }
+
+        return metricTypeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected MetricValueItemProvider metricValueItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.MetricValue}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createMetricValueAdapter() {
+        if (metricValueItemProvider == null) {
+            metricValueItemProvider = new MetricValueItemProvider(this);
+        }
+
+        return metricValueItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link edu.kit.ipd.descartes.perfdatarepo.Impact} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ImpactItemProvider impactItemProvider;
+
+    /**
+     * This creates an adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Impact}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createImpactAdapter() {
+        if (impactItemProvider == null) {
+            impactItemProvider = new ImpactItemProvider(this);
+        }
+
+        return impactItemProvider;
+    }
+
+    /**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+    /**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isFactoryForType(Object type) {
+        return supportedTypes.contains(type) || super.isFactoryForType(type);
+    }
+
+    /**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter adapt(Notifier notifier, Object type) {
+        return super.adapt(notifier, this);
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object adapt(Object object, Object type) {
+        if (isFactoryForType(type)) {
+            Object adapter = super.adapt(object, type);
+            if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void addListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.addListener(notifyChangedListener);
+    }
+
+    /**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void removeListener(INotifyChangedListener notifyChangedListener) {
+        changeNotifier.removeListener(notifyChangedListener);
+    }
+
+    /**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void fireNotifyChanged(Notification notification) {
+        changeNotifier.fireNotifyChanged(notification);
+
+        if (parentAdapterFactory != null) {
+            parentAdapterFactory.fireNotifyChanged(notification);
+        }
+    }
+
+    /**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void dispose() {
+        if (performanceDataRepositoryItemProvider != null) performanceDataRepositoryItemProvider.dispose();
+        if (resultItemProvider != null) resultItemProvider.dispose();
+        if (metricTypeItemProvider != null) metricTypeItemProvider.dispose();
+        if (metricValueItemProvider != null) metricValueItemProvider.dispose();
+        if (impactItemProvider != null) impactItemProvider.dispose();
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..82d6ee951daf68bf94efe4675096487bdc42cf08
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/PerformanceDataRepositoryItemProvider.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage;
+import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PerformanceDataRepositoryItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public PerformanceDataRepositoryItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY);
+            childrenFeatures.add(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES);
+            childrenFeatures.add(PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns PerformanceDataRepository.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/PerformanceDataRepository"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((PerformanceDataRepository)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_PerformanceDataRepository_type") :
+            getString("_UI_PerformanceDataRepository_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(PerformanceDataRepository.class)) {
+            case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY:
+            case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES:
+            case PerfdatarepoPackage.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__RESULT_HISTORY,
+                 PerfdatarepoFactory.eINSTANCE.createResult()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__METRIC_TYPES,
+                 PerfdatarepoFactory.eINSTANCE.createMetricType()));
+
+        newChildDescriptors.add
+            (createChildParameter
+                (PerfdatarepoPackage.Literals.PERFORMANCE_DATA_REPOSITORY__IMPACT_HISTORY,
+                 PerfdatarepoFactory.eINSTANCE.createImpact()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return PerfdatarepoEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b6cb3d107161d32fea066420ffe4333b79f9c7d
--- /dev/null
+++ b/edu.kit.ipd.descartes.perfdatarepo.edit/src/edu/kit/ipd/descartes/perfdatarepo/provider/ResultItemProvider.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package edu.kit.ipd.descartes.perfdatarepo.provider;
+
+
+import edu.kit.ipd.descartes.core.provider.EntityItemProvider;
+
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory;
+import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link edu.kit.ipd.descartes.perfdatarepo.Result} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResultItemProvider
+    extends EntityItemProvider
+    implements
+        IEditingDomainItemProvider,
+        IStructuredItemContentProvider,
+        ITreeItemContentProvider,
+        IItemLabelProvider,
+        IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ResultItemProvider(AdapterFactory adapterFactory) {
+        super(adapterFactory);
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+        if (itemPropertyDescriptors == null) {
+            super.getPropertyDescriptors(object);
+
+            addTimestampPropertyDescriptor(object);
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Timestamp feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTimestampPropertyDescriptor(Object object) {
+        itemPropertyDescriptors.add
+            (createItemPropertyDescriptor
+                (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+                 getResourceLocator(),
+                 getString("_UI_Result_timestamp_feature"),
+                 getString("_UI_PropertyDescriptor_description", "_UI_Result_timestamp_feature", "_UI_Result_type"),
+                 PerfdatarepoPackage.Literals.RESULT__TIMESTAMP,
+                 true,
+                 false,
+                 false,
+                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                 null,
+                 null));
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+        if (childrenFeatures == null) {
+            super.getChildrenFeatures(object);
+            childrenFeatures.add(PerfdatarepoPackage.Literals.RESULT__METRIC_VALUES);
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature(Object object, Object child) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature(object, child);
+    }
+
+    /**
+     * This returns Result.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage(Object object) {
+        return overlayImage(object, getResourceLocator().getImage("full/obj16/Result"));
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText(Object object) {
+        String label = ((Result)object).getName();
+        return label == null || label.length() == 0 ?
+            getString("_UI_Result_type") :
+            getString("_UI_Result_type") + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged(Notification notification) {
+        updateChildren(notification);
+
+        switch (notification.getFeatureID(Result.class)) {
+            case PerfdatarepoPackage.RESULT__TIMESTAMP:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+                return;
+            case PerfdatarepoPackage.RESULT__METRIC_VALUES:
+                fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+                return;
+        }
+        super.notifyChanged(notification);
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+        super.collectNewChildDescriptors(newChildDescriptors, object);
+
+        newChildDescriptors.add
+            (createChildParameter
+                (PerfdatarepoPackage.Literals.RESULT__METRIC_VALUES,
+                 PerfdatarepoFactory.eINSTANCE.createMetricValue()));
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return PerfdatarepoEditPlugin.INSTANCE;
+    }
+
+}