Browse Source

Refactored meta models:
- extracted NamedElement from different meta models to base.ecore
- refactored StatechartScopes to be types::Type and EventDefinition, VariableDefinition and Operations to be types::Event, types::Property and types::Operation accordingly

terfloth@itemis.de 13 years ago
parent
commit
279d6c367d
88 changed files with 2088 additions and 439 deletions
  1. 7 7
      plugins/org.yakindu.base.types.edit/.classpath
  2. 4 2
      plugins/org.yakindu.base.types.edit/META-INF/MANIFEST.MF
  3. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEAnnotation_contents_EObject.gif
  4. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEAnnotation_details_EStringToStringMapEntry.gif
  5. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eGenericSuperTypes_EGenericType.gif
  6. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eOperations_EOperation.gif
  7. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eStructuralFeatures_EAttribute.gif
  8. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eStructuralFeatures_EReference.gif
  9. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClassifier_eTypeParameters_ETypeParameter.gif
  10. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEEnum_eLiterals_EEnumLiteral.gif
  11. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eLowerBound_EGenericType.gif
  12. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eTypeArguments_EGenericType.gif
  13. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eUpperBound_EGenericType.gif
  14. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEModelElement_eAnnotations_EAnnotation.gif
  15. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eGenericExceptions_EGenericType.gif
  16. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eParameters_EParameter.gif
  17. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eTypeParameters_ETypeParameter.gif
  18. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EClass.gif
  19. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EDataType.gif
  20. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EEnum.gif
  21. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eSubpackages_EPackage.gif
  22. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateETypeParameter_eBounds_EGenericType.gif
  23. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateETypedElement_eGenericType_EGenericType.gif
  24. BIN
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateType_features_Event.gif
  25. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EAnnotation.gif
  26. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EAttribute.gif
  27. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EClass.gif
  28. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EDataType.gif
  29. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EEnum.gif
  30. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EEnumLiteral.gif
  31. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EFactory.gif
  32. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EGenericType.gif
  33. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EObject.gif
  34. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EOperation.gif
  35. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EPackage.gif
  36. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EParameter.gif
  37. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EReference.gif
  38. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/EStringToStringMapEntry.gif
  39. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/ETypeParameter.gif
  40. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/Event.gif
  41. BIN
      plugins/org.yakindu.base.types.edit/icons/full/obj16/NamedElement.gif
  42. 102 0
      plugins/org.yakindu.base.types.edit/plugin.properties
  43. 93 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/BaseEditPlugin.java
  44. 203 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/BaseItemProviderAdapterFactory.java
  45. 161 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/NamedElementItemProvider.java
  46. 112 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/EventItemProvider.java
  47. 5 4
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/FeatureItemProvider.java
  48. 0 4
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/LibraryItemProvider.java
  49. 0 3
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java
  50. 5 4
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterItemProvider.java
  51. 0 2
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PropertyItemProvider.java
  52. 8 33
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeItemProvider.java
  53. 3 1
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesEditPlugin.java
  54. 25 3
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesItemProviderAdapterFactory.java
  55. 4 1
      plugins/org.yakindu.base.types/META-INF/MANIFEST.MF
  56. 9 0
      plugins/org.yakindu.base.types/model/base.ecore
  57. 15 0
      plugins/org.yakindu.base.types/model/base.genmodel
  58. 9 11
      plugins/org.yakindu.base.types/model/types.ecore
  59. 24 8
      plugins/org.yakindu.base.types/model/types.ecorediag
  60. 6 8
      plugins/org.yakindu.base.types/model/types.genmodel
  61. 5 0
      plugins/org.yakindu.base.types/plugin.xml
  62. 46 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/BaseFactory.java
  63. 153 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/BasePackage.java
  64. 6 6
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/NamedElement.java
  65. 99 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/BaseFactoryImpl.java
  66. 201 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/BasePackageImpl.java
  67. 167 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/NamedElementImpl.java
  68. 9 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/base.ecore
  69. 124 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/util/BaseAdapterFactory.java
  70. 114 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/util/BaseSwitch.java
  71. 21 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Event.java
  72. 2 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Feature.java
  73. 2 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Parameter.java
  74. 1 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Type.java
  75. 9 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesFactory.java
  76. 117 115
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java
  77. 42 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EventImpl.java
  78. 6 7
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/FeatureImpl.java
  79. 0 5
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/LibraryImpl.java
  80. 0 4
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java
  81. 6 7
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java
  82. 0 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PropertyImpl.java
  83. 2 59
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeImpl.java
  84. 20 4
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesFactoryImpl.java
  85. 61 107
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java
  86. 9 11
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/types.ecore
  87. 34 10
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java
  88. 37 12
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

+ 7 - 7
plugins/org.yakindu.base.types.edit/.classpath

@@ -1,7 +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>
+<?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>

+ 4 - 2
plugins/org.yakindu.base.types.edit/META-INF/MANIFEST.MF

@@ -8,8 +8,10 @@ Bundle-Activator: org.yakindu.base.types.provider.TypesEditPlugin$Implementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.yakindu.base.types.provider
+Export-Package: org.yakindu.base.base.provider,
+ org.yakindu.base.types.provider
 Require-Bundle: org.eclipse.core.runtime,
  org.yakindu.base.types;visibility:=reexport,
- org.eclipse.emf.edit;visibility:=reexport
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;bundle-version="2.7.0"
 Bundle-ActivationPolicy: lazy

BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEAnnotation_contents_EObject.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEAnnotation_details_EStringToStringMapEntry.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eGenericSuperTypes_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eOperations_EOperation.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eStructuralFeatures_EAttribute.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClass_eStructuralFeatures_EReference.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEClassifier_eTypeParameters_ETypeParameter.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEEnum_eLiterals_EEnumLiteral.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eLowerBound_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eTypeArguments_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEGenericType_eUpperBound_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEModelElement_eAnnotations_EAnnotation.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eGenericExceptions_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eParameters_EParameter.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEOperation_eTypeParameters_ETypeParameter.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EClass.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EDataType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eClassifiers_EEnum.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateEPackage_eSubpackages_EPackage.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateETypeParameter_eBounds_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateETypedElement_eGenericType_EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateType_features_Event.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EAnnotation.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EAttribute.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EClass.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EDataType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EEnum.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EEnumLiteral.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EFactory.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EGenericType.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EObject.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EOperation.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EPackage.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EParameter.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EReference.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/EStringToStringMapEntry.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/ETypeParameter.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/Event.gif


BIN
plugins/org.yakindu.base.types.edit/icons/full/obj16/NamedElement.gif


+ 102 - 0
plugins/org.yakindu.base.types.edit/plugin.properties

@@ -40,3 +40,105 @@ _UI_Library_types_feature = Types
 _UI_Library_id_feature = Id
 _UI_Unknown_feature = Unspecified
 
+_UI_Event_type = Event
+_UI_EAttribute_type = EAttribute
+_UI_EAnnotation_type = EAnnotation
+_UI_EClass_type = EClass
+_UI_EClassifier_type = EClassifier
+_UI_EDataType_type = EData Type
+_UI_EEnum_type = EEnum
+_UI_EEnumLiteral_type = EEnum Literal
+_UI_EFactory_type = EFactory
+_UI_EModelElement_type = EModel Element
+_UI_ENamedElement_type = ENamed Element
+_UI_EObject_type = EObject
+_UI_EOperation_type = EOperation
+_UI_EPackage_type = EPackage
+_UI_EParameter_type = EParameter
+_UI_EReference_type = EReference
+_UI_EStructuralFeature_type = EStructural Feature
+_UI_ETypedElement_type = ETyped Element
+_UI_EStringToStringMapEntry_type = EString To String Map Entry
+_UI_EGenericType_type = EGeneric Type
+_UI_ETypeParameter_type = EType Parameter
+_UI_EAttribute_iD_feature = ID
+_UI_EAttribute_eAttributeType_feature = EAttribute Type
+_UI_EAnnotation_source_feature = Source
+_UI_EAnnotation_details_feature = Details
+_UI_EAnnotation_eModelElement_feature = EModel Element
+_UI_EAnnotation_contents_feature = Contents
+_UI_EAnnotation_references_feature = References
+_UI_EClass_abstract_feature = Abstract
+_UI_EClass_interface_feature = Interface
+_UI_EClass_eSuperTypes_feature = ESuper Types
+_UI_EClass_eOperations_feature = EOperations
+_UI_EClass_eAllAttributes_feature = EAll Attributes
+_UI_EClass_eAllReferences_feature = EAll References
+_UI_EClass_eReferences_feature = EReferences
+_UI_EClass_eAttributes_feature = EAttributes
+_UI_EClass_eAllContainments_feature = EAll Containments
+_UI_EClass_eAllOperations_feature = EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature = EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature = EAll Super Types
+_UI_EClass_eIDAttribute_feature = EID Attribute
+_UI_EClass_eStructuralFeatures_feature = EStructural Features
+_UI_EClass_eGenericSuperTypes_feature = EGeneric Super Types
+_UI_EClass_eAllGenericSuperTypes_feature = EAll Generic Super Types
+_UI_EClassifier_instanceClassName_feature = Instance Class Name
+_UI_EClassifier_instanceClass_feature = Instance Class
+_UI_EClassifier_defaultValue_feature = Default Value
+_UI_EClassifier_instanceTypeName_feature = Instance Type Name
+_UI_EClassifier_ePackage_feature = EPackage
+_UI_EClassifier_eTypeParameters_feature = EType Parameters
+_UI_EDataType_serializable_feature = Serializable
+_UI_EEnum_eLiterals_feature = ELiterals
+_UI_EEnumLiteral_value_feature = Value
+_UI_EEnumLiteral_instance_feature = Instance
+_UI_EEnumLiteral_literal_feature = Literal
+_UI_EEnumLiteral_eEnum_feature = EEnum
+_UI_EFactory_ePackage_feature = EPackage
+_UI_EModelElement_eAnnotations_feature = EAnnotations
+_UI_ENamedElement_name_feature = Name
+_UI_EOperation_eContainingClass_feature = EContaining Class
+_UI_EOperation_eTypeParameters_feature = EType Parameters
+_UI_EOperation_eParameters_feature = EParameters
+_UI_EOperation_eExceptions_feature = EExceptions
+_UI_EOperation_eGenericExceptions_feature = EGeneric Exceptions
+_UI_EPackage_nsURI_feature = Ns URI
+_UI_EPackage_nsPrefix_feature = Ns Prefix
+_UI_EPackage_eFactoryInstance_feature = EFactory Instance
+_UI_EPackage_eClassifiers_feature = EClassifiers
+_UI_EPackage_eSubpackages_feature = ESubpackages
+_UI_EPackage_eSuperPackage_feature = ESuper Package
+_UI_EParameter_eOperation_feature = EOperation
+_UI_EReference_containment_feature = Containment
+_UI_EReference_container_feature = Container
+_UI_EReference_resolveProxies_feature = Resolve Proxies
+_UI_EReference_eOpposite_feature = EOpposite
+_UI_EReference_eReferenceType_feature = EReference Type
+_UI_EReference_eKeys_feature = EKeys
+_UI_EStructuralFeature_changeable_feature = Changeable
+_UI_EStructuralFeature_volatile_feature = Volatile
+_UI_EStructuralFeature_transient_feature = Transient
+_UI_EStructuralFeature_defaultValueLiteral_feature = Default Value Literal
+_UI_EStructuralFeature_defaultValue_feature = Default Value
+_UI_EStructuralFeature_unsettable_feature = Unsettable
+_UI_EStructuralFeature_derived_feature = Derived
+_UI_EStructuralFeature_eContainingClass_feature = EContaining Class
+_UI_ETypedElement_ordered_feature = Ordered
+_UI_ETypedElement_unique_feature = Unique
+_UI_ETypedElement_lowerBound_feature = Lower Bound
+_UI_ETypedElement_upperBound_feature = Upper Bound
+_UI_ETypedElement_many_feature = Many
+_UI_ETypedElement_required_feature = Required
+_UI_ETypedElement_eType_feature = EType
+_UI_ETypedElement_eGenericType_feature = EGeneric Type
+_UI_EStringToStringMapEntry_key_feature = Key
+_UI_EStringToStringMapEntry_value_feature = Value
+_UI_EGenericType_eUpperBound_feature = EUpper Bound
+_UI_EGenericType_eTypeArguments_feature = EType Arguments
+_UI_EGenericType_eRawType_feature = ERaw Type
+_UI_EGenericType_eLowerBound_feature = ELower Bound
+_UI_EGenericType_eTypeParameter_feature = EType Parameter
+_UI_EGenericType_eClassifier_feature = EClassifier
+_UI_ETypeParameter_eBounds_feature = EBounds

+ 93 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/BaseEditPlugin.java

@@ -0,0 +1,93 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Base edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class BaseEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final BaseEditPlugin INSTANCE = new BaseEditPlugin();
+
+	/**
+	 * 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 BaseEditPlugin() {
+		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;
+		}
+	}
+
+}

+ 203 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/BaseItemProviderAdapterFactory.java

@@ -0,0 +1,203 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.provider;
+
+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;
+
+import org.yakindu.base.base.util.BaseAdapterFactory;
+
+/**
+ * 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 BaseItemProviderAdapterFactory extends BaseAdapterFactory 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 BaseItemProviderAdapterFactory() {
+		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 org.yakindu.base.base.NamedElement} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NamedElementItemProvider namedElementItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.base.base.NamedElement}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createNamedElementAdapter() {
+		if (namedElementItemProvider == null) {
+			namedElementItemProvider = new NamedElementItemProvider(this);
+		}
+
+		return namedElementItemProvider;
+	}
+
+	/**
+	 * 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 (namedElementItemProvider != null) namedElementItemProvider.dispose();
+	}
+
+}

+ 161 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/base/provider/NamedElementItemProvider.java

@@ -0,0 +1,161 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.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 org.yakindu.base.base.BasePackage;
+import org.yakindu.base.base.NamedElement;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.base.base.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"),
+				 BasePackage.Literals.NAMED_ELEMENT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns NamedElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NamedElement"));
+	}
+
+	/**
+	 * 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 BasePackage.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 BaseEditPlugin.INSTANCE;
+	}
+
+}

+ 112 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/EventItemProvider.java

@@ -0,0 +1,112 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.types.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.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.yakindu.base.types.Event;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.base.types.Event} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EventItemProvider
+	extends FeatureItemProvider
+	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);
+	}
+
+}

+ 5 - 4
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/FeatureItemProvider.java

@@ -12,9 +12,10 @@ 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.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -25,7 +26,7 @@ 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 org.yakindu.base.base.BasePackage;
 import org.yakindu.base.types.Feature;
 import org.yakindu.base.types.TypesPackage;
 
@@ -105,7 +106,7 @@ public class FeatureItemProvider
 				 getResourceLocator(),
 				 getString("_UI_NamedElement_name_feature"),
 				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
-				 TypesPackage.Literals.NAMED_ELEMENT__NAME,
+				 BasePackage.Literals.NAMED_ELEMENT__NAME,
 				 true,
 				 false,
 				 false,

+ 0 - 4
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/LibraryItemProvider.java

@@ -12,11 +12,8 @@ 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;
@@ -27,7 +24,6 @@ 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 org.yakindu.base.types.Library;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;

+ 0 - 3
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java

@@ -12,9 +12,7 @@ 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;
@@ -22,7 +20,6 @@ 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 org.yakindu.base.types.Operation;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;

+ 5 - 4
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterItemProvider.java

@@ -12,9 +12,10 @@ 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.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -25,7 +26,7 @@ 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 org.yakindu.base.base.BasePackage;
 import org.yakindu.base.types.Parameter;
 import org.yakindu.base.types.TypesPackage;
 
@@ -105,7 +106,7 @@ public class ParameterItemProvider
 				 getResourceLocator(),
 				 getString("_UI_NamedElement_name_feature"),
 				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
-				 TypesPackage.Literals.NAMED_ELEMENT__NAME,
+				 BasePackage.Literals.NAMED_ELEMENT__NAME,
 				 true,
 				 false,
 				 false,

+ 0 - 2
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PropertyItemProvider.java

@@ -12,14 +12,12 @@ 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;
-
 import org.yakindu.base.types.Property;
 
 /**

+ 8 - 33
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeItemProvider.java

@@ -12,11 +12,9 @@ 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.ecore.provider.ENamedElementItemProvider;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -24,10 +22,8 @@ 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 org.yakindu.base.base.provider.NamedElementItemProvider;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;
@@ -39,7 +35,7 @@ import org.yakindu.base.types.TypesPackage;
  * @generated
  */
 public class TypeItemProvider
-	extends ItemProviderAdapter
+	extends NamedElementItemProvider
 	implements
 		IEditingDomainItemProvider,
 		IStructuredItemContentProvider,
@@ -67,34 +63,11 @@ public class TypeItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addNamePropertyDescriptor(object);
 			addSuperTypesPropertyDescriptor(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"),
-				 TypesPackage.Literals.NAMED_ELEMENT__NAME,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
 	/**
 	 * This adds a property descriptor for the Super Types feature.
 	 * <!-- begin-user-doc -->
@@ -184,9 +157,6 @@ public class TypeItemProvider
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(Type.class)) {
-			case TypesPackage.TYPE__NAME:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
 			case TypesPackage.TYPE__FEATURES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -214,6 +184,11 @@ public class TypeItemProvider
 			(createChildParameter
 				(TypesPackage.Literals.TYPE__FEATURES,
 				 TypesFactory.eINSTANCE.createProperty()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.TYPE__FEATURES,
+				 TypesFactory.eINSTANCE.createEvent()));
 	}
 
 	/**

+ 3 - 1
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesEditPlugin.java

@@ -7,8 +7,9 @@
 package org.yakindu.base.types.provider;
 
 import org.eclipse.emf.common.EMFPlugin;
-
 import org.eclipse.emf.common.util.ResourceLocator;
+import org.yakindu.base.base.provider.BaseEditPlugin;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
 
 /**
  * This is the central singleton for the Types edit plugin.
@@ -42,6 +43,7 @@ public final class TypesEditPlugin extends EMFPlugin {
 	public TypesEditPlugin() {
 		super
 		  (new ResourceLocator [] {
+		     BaseEditPlugin.INSTANCE,
 		   });
 	}
 

+ 25 - 3
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesItemProviderAdapterFactory.java

@@ -12,7 +12,6 @@ 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;
@@ -24,7 +23,6 @@ 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;
-
 import org.yakindu.base.types.util.TypesAdapterFactory;
 
 /**
@@ -190,6 +188,29 @@ public class TypesItemProviderAdapterFactory extends TypesAdapterFactory impleme
 		return libraryItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.base.types.Event} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EventItemProvider eventItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.base.types.Event}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEventAdapter() {
+		if (eventItemProvider == null) {
+			eventItemProvider = new EventItemProvider(this);
+		}
+
+		return eventItemProvider;
+	}
+
 	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
@@ -289,11 +310,12 @@ public class TypesItemProviderAdapterFactory extends TypesAdapterFactory impleme
 	 * @generated
 	 */
 	public void dispose() {
+		if (libraryItemProvider != null) libraryItemProvider.dispose();
 		if (typeItemProvider != null) typeItemProvider.dispose();
 		if (operationItemProvider != null) operationItemProvider.dispose();
 		if (propertyItemProvider != null) propertyItemProvider.dispose();
 		if (parameterItemProvider != null) parameterItemProvider.dispose();
-		if (libraryItemProvider != null) libraryItemProvider.dispose();
+		if (eventItemProvider != null) eventItemProvider.dispose();
 	}
 
 }

+ 4 - 1
plugins/org.yakindu.base.types/META-INF/MANIFEST.MF

@@ -7,7 +7,10 @@ Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.yakindu.base.types,
+Export-Package: org.yakindu.base.base,
+ org.yakindu.base.base.impl,
+ org.yakindu.base.base.util,
+ org.yakindu.base.types,
  org.yakindu.base.types.impl,
  org.yakindu.base.types.util
 Require-Bundle: org.eclipse.core.runtime,

+ 9 - 0
plugins/org.yakindu.base.types/model/base.ecore

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="base"
+    nsURI="http://www.yakindu.org/base/base/2.0.0" nsPrefix="base">
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+</ecore:EPackage>

+ 15 - 0
plugins/org.yakindu.base.types/model/base.genmodel

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.yakindu.base.types/src-gen"
+    editDirectory="/org.yakindu.base.types.edit/src" modelPluginID="org.yakindu.base.types"
+    modelName="Base" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+    copyrightFields="false">
+  <foreignModel>base.ecore</foreignModel>
+  <genPackages prefix="Base" basePackage="org.yakindu.base" disposableProviderFactory="true"
+      loadInitialization="true" ecorePackage="base.ecore#/">
+    <genClasses ecoreClass="base.ecore#//NamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute base.ecore#//NamedElement/name"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>

+ 9 - 11
plugins/org.yakindu.base.types/model/types.ecore

@@ -3,7 +3,12 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="types"
     nsURI="http://www.yakindu.org/base/types/2.0.0" nsPrefix="types">
-  <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Library">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+        eType="#//Type" containment="true" eOpposite="#//Type/owningLibrary"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="base.ecore#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
         eType="#//Feature" containment="true" eOpposite="#//Feature/owningType"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
@@ -11,7 +16,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningLibrary" eType="#//Library"
         eOpposite="#//Library/types"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//TypedElement #//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningType" eType="#//Type"
         eOpposite="#//Type/features"/>
   </eClassifiers>
@@ -20,19 +25,12 @@
         eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Feature"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement #//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement base.ecore#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningOperation" eType="#//Operation"
         eOpposite="#//Operation/parameters"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" interface="true">
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Type"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Library">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
-        eType="#//Type" containment="true" eOpposite="#//Type/owningLibrary"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Feature"/>
 </ecore:EPackage>

+ 24 - 8
plugins/org.yakindu.base.types/model/types.ecorediag

@@ -132,6 +132,22 @@
     <element xmi:type="ecore:EClass" href="Types.ecore#//Library"/>
     <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DVdNwiZ1EeGjJpJVRtToAg" x="40" y="104"/>
   </children>
+  <children xmi:type="notation:Node" xmi:id="_1VKhcVcJEeGSfaursziXVw" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_1VMWoFcJEeGSfaursziXVw" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_1VM9sFcJEeGSfaursziXVw" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_1VM9sVcJEeGSfaursziXVw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_1VM9slcJEeGSfaursziXVw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_1VM9s1cJEeGSfaursziXVw"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_1VNkwFcJEeGSfaursziXVw" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_1VNkwVcJEeGSfaursziXVw"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_1VNkwlcJEeGSfaursziXVw"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_1VNkw1cJEeGSfaursziXVw"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_1VKhclcJEeGSfaursziXVw" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="Types.ecore#//Event"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1VKhc1cJEeGSfaursziXVw" x="640" y="224"/>
+  </children>
   <styles xmi:type="notation:DiagramStyle" xmi:id="_xfpuASZtEeGjJpJVRtToAg"/>
   <element xmi:type="ecore:EPackage" href="Types.ecore#/"/>
   <edges xmi:type="notation:Edge" xmi:id="_cC4GkCZxEeGjJpJVRtToAg" type="3002" source="_702DYCZxEeGjJpJVRtToAg" target="_zh7u0CZtEeGjJpJVRtToAg">
@@ -262,14 +278,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z-CPECZzEeGjJpJVRtToAg" id="(0.6176470588235294,0.8809523809523809)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z-CPESZzEeGjJpJVRtToAg" id="(0.12745098039215685,0.47619047619047616)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_Fp4ugCZ1EeGjJpJVRtToAg" type="3003" source="_DVdNwCZ1EeGjJpJVRtToAg" target="__l7IUCZxEeGjJpJVRtToAg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_Fp4ugSZ1EeGjJpJVRtToAg" lineColor="4210752"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_Fp4ugiZ1EeGjJpJVRtToAg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Fp4ugyZ1EeGjJpJVRtToAg" points="[19, -7, -206, 73]$[226, -100, 1, -20]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fp6jsCZ1EeGjJpJVRtToAg" id="(0.8137254901960784,0.4523809523809524)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fp6jsSZ1EeGjJpJVRtToAg" id="(0.22549019607843138,0.42857142857142855)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_GOtS0CZ1EeGjJpJVRtToAg" type="3002" source="_DVdNwCZ1EeGjJpJVRtToAg" target="_zh7u0CZtEeGjJpJVRtToAg">
     <children xmi:type="notation:Node" xmi:id="_GOtS1CZ1EeGjJpJVRtToAg" type="4011">
       <layoutConstraint xmi:type="notation:Location" xmi:id="_GOtS1SZ1EeGjJpJVRtToAg" x="-10" y="-10"/>
@@ -298,4 +306,12 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qao7UCZ1EeGjJpJVRtToAg" id="(0.09803921568627451,0.42857142857142855)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qao7USZ1EeGjJpJVRtToAg" id="(0.5,0.5)"/>
   </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_4GvRMFcJEeGSfaursziXVw" type="3003" source="_1VKhcVcJEeGSfaursziXVw" target="_46n_4CZvEeGjJpJVRtToAg">
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_4GvRMVcJEeGSfaursziXVw" routing="Rectilinear" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_4GvRMlcJEeGSfaursziXVw" fontName="Lucida Grande"/>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4GvRM1cJEeGSfaursziXVw" points="[-13, 0, 185, 19]$[-145, 0, 53, 19]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4GxtcFcJEeGSfaursziXVw" id="(0.13725490196078433,0.6190476190476191)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4GxtcVcJEeGSfaursziXVw" id="(0.47058823529411764,0.14285714285714285)"/>
+  </edges>
 </notation:Diagram>

+ 6 - 8
plugins/org.yakindu.base.types/model/types.genmodel

@@ -3,10 +3,14 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.yakindu.base.types/src-gen"
     modelPluginID="org.yakindu.base.types" modelName="Types" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="6.0" copyrightFields="false">
+    complianceLevel="6.0" copyrightFields="false" usedGenPackages="base.genmodel#//base">
   <foreignModel>types.ecore</foreignModel>
   <genPackages prefix="Types" basePackage="org.yakindu.base" disposableProviderFactory="true"
       loadInitialization="true" ecorePackage="types.ecore#/">
+    <genClasses ecoreClass="types.ecore#//Library">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference types.ecore#//Library/types"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute types.ecore#//Library/id"/>
+    </genClasses>
     <genClasses ecoreClass="types.ecore#//Type">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference types.ecore#//Type/features"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference types.ecore#//Type/superTypes"/>
@@ -25,12 +29,6 @@
     <genClasses ecoreClass="types.ecore#//TypedElement">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference types.ecore#//TypedElement/type"/>
     </genClasses>
-    <genClasses ecoreClass="types.ecore#//NamedElement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute types.ecore#//NamedElement/name"/>
-    </genClasses>
-    <genClasses ecoreClass="types.ecore#//Library">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference types.ecore#//Library/types"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute types.ecore#//Library/id"/>
-    </genClasses>
+    <genClasses ecoreClass="types.ecore#//Event"/>
   </genPackages>
 </genmodel:GenModel>

+ 5 - 0
plugins/org.yakindu.base.types/plugin.xml

@@ -16,6 +16,11 @@
             uri="http://www.yakindu.org/base/types/2.0.0"
             class="org.yakindu.base.types.TypesPackage"
             genModel="model/types.genmodel"/>
+      <package
+            class="org.yakindu.base.base.BasePackage"
+            genModel="model/base.genmodel"
+            uri="http://www.yakindu.org/base/base/2.0.0">
+      </package>
    </extension>
 
 </plugin>

+ 46 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/BaseFactory.java

@@ -0,0 +1,46 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.base.BasePackage
+ * @generated
+ */
+public interface BaseFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	BaseFactory eINSTANCE = org.yakindu.base.base.impl.BaseFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Named Element</em>'.
+	 * @generated
+	 */
+	NamedElement createNamedElement();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	BasePackage getBasePackage();
+
+} //BaseFactory

+ 153 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/BasePackage.java

@@ -0,0 +1,153 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.base.BaseFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface BasePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "base";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.yakindu.org/base/base/2.0.0";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "base";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	BasePackage eINSTANCE = org.yakindu.base.base.impl.BasePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.base.base.impl.NamedElementImpl <em>Named Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.base.impl.NamedElementImpl
+	 * @see org.yakindu.base.base.impl.BasePackageImpl#getNamedElement()
+	 * @generated
+	 */
+	int NAMED_ELEMENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Named Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT_FEATURE_COUNT = 1;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Named Element</em>'.
+	 * @see org.yakindu.base.base.NamedElement
+	 * @generated
+	 */
+	EClass getNamedElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.base.base.NamedElement#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.yakindu.base.base.NamedElement#getName()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	EAttribute getNamedElement_Name();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	BaseFactory getBaseFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.yakindu.base.base.impl.NamedElementImpl <em>Named Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.base.impl.NamedElementImpl
+		 * @see org.yakindu.base.base.impl.BasePackageImpl#getNamedElement()
+		 * @generated
+		 */
+		EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+	}
+
+} //BasePackage

+ 6 - 6
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/NamedElement.java

@@ -4,7 +4,7 @@
  *
  * $Id$
  */
-package org.yakindu.base.types;
+package org.yakindu.base.base;
 
 import org.eclipse.emf.ecore.EObject;
 
@@ -16,12 +16,12 @@ import org.eclipse.emf.ecore.EObject;
  * <p>
  * The following features are supported:
  * <ul>
- *   <li>{@link org.yakindu.base.types.NamedElement#getName <em>Name</em>}</li>
+ *   <li>{@link org.yakindu.base.base.NamedElement#getName <em>Name</em>}</li>
  * </ul>
  * </p>
  *
- * @see org.yakindu.base.types.TypesPackage#getNamedElement()
- * @model interface="true" abstract="true"
+ * @see org.yakindu.base.base.BasePackage#getNamedElement()
+ * @model
  * @generated
  */
 public interface NamedElement extends EObject {
@@ -35,14 +35,14 @@ public interface NamedElement extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
-	 * @see org.yakindu.base.types.TypesPackage#getNamedElement_Name()
+	 * @see org.yakindu.base.base.BasePackage#getNamedElement_Name()
 	 * @model
 	 * @generated
 	 */
 	String getName();
 
 	/**
-	 * Sets the value of the '{@link org.yakindu.base.types.NamedElement#getName <em>Name</em>}' attribute.
+	 * Sets the value of the '{@link org.yakindu.base.base.NamedElement#getName <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Name</em>' attribute.

+ 99 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/BaseFactoryImpl.java

@@ -0,0 +1,99 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.yakindu.base.base.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BaseFactoryImpl extends EFactoryImpl implements BaseFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static BaseFactory init() {
+		try {
+			BaseFactory theBaseFactory = (BaseFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.yakindu.org/base/base/2.0.0"); 
+			if (theBaseFactory != null) {
+				return theBaseFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new BaseFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BaseFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case BasePackage.NAMED_ELEMENT: return createNamedElement();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NamedElement createNamedElement() {
+		NamedElementImpl namedElement = new NamedElementImpl();
+		return namedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BasePackage getBasePackage() {
+		return (BasePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static BasePackage getPackage() {
+		return BasePackage.eINSTANCE;
+	}
+
+} //BaseFactoryImpl

+ 201 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/BasePackageImpl.java

@@ -0,0 +1,201 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.impl;
+
+import java.io.IOException;
+import java.net.URL;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.yakindu.base.base.BaseFactory;
+import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.base.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BasePackageImpl extends EPackageImpl implements BasePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected String packageFilename = "base.ecore";
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass namedElementEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.yakindu.base.base.BasePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private BasePackageImpl() {
+		super(eNS_URI, BaseFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link BasePackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @generated
+	 */
+	public static BasePackage init() {
+		if (isInited) return (BasePackage)EPackage.Registry.INSTANCE.getEPackage(BasePackage.eNS_URI);
+
+		// Obtain or create and register package
+		BasePackageImpl theBasePackage = (BasePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof BasePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new BasePackageImpl());
+
+		isInited = true;
+
+		// Load packages
+		theBasePackage.loadPackage();
+
+		// Fix loaded packages
+		theBasePackage.fixPackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theBasePackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(BasePackage.eNS_URI, theBasePackage);
+		return theBasePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getNamedElement() {
+		if (namedElementEClass == null) {
+			namedElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(BasePackage.eNS_URI).getEClassifiers().get(0);
+		}
+		return namedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Name() {
+        return (EAttribute)getNamedElement().getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BaseFactory getBaseFactory() {
+		return (BaseFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isLoaded = false;
+
+	/**
+	 * Laods the package and any sub-packages from their serialized form.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void loadPackage() {
+		if (isLoaded) return;
+		isLoaded = true;
+
+		URL url = getClass().getResource(packageFilename);
+		if (url == null) {
+			throw new RuntimeException("Missing serialized package: " + packageFilename);
+		}
+		URI uri = URI.createURI(url.toString());
+		Resource resource = new EcoreResourceFactoryImpl().createResource(uri);
+		try {
+			resource.load(null);
+		}
+		catch (IOException exception) {
+			throw new WrappedException(exception);
+		}
+		initializeFromLoadedEPackage(this, (EPackage)resource.getContents().get(0));
+		createResource(eNS_URI);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isFixed = false;
+
+	/**
+	 * Fixes up the loaded package, to make it appear as if it had been programmatically built.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fixPackageContents() {
+		if (isFixed) return;
+		isFixed = true;
+		fixEClassifiers();
+	}
+
+	/**
+	 * Sets the instance class on the given classifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void fixInstanceClass(EClassifier eClassifier) {
+		if (eClassifier.getInstanceClassName() == null) {
+			eClassifier.setInstanceClassName("org.yakindu.base.base." + eClassifier.getName());
+			setGeneratedClassName(eClassifier);
+		}
+	}
+
+} //BasePackageImpl

+ 167 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/NamedElementImpl.java

@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.base.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.base.base.impl.NamedElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NamedElementImpl extends EObjectImpl implements NamedElement {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NamedElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return BasePackage.Literals.NAMED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BasePackage.NAMED_ELEMENT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case BasePackage.NAMED_ELEMENT__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case BasePackage.NAMED_ELEMENT__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case BasePackage.NAMED_ELEMENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case BasePackage.NAMED_ELEMENT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //NamedElementImpl

+ 9 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/impl/base.ecore

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="base"
+    nsURI="http://www.yakindu.org/base/base/2.0.0" nsPrefix="base">
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+</ecore:EPackage>

+ 124 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/util/BaseAdapterFactory.java

@@ -0,0 +1,124 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.yakindu.base.base.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.base.BasePackage
+ * @generated
+ */
+public class BaseAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static BasePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BaseAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = BasePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BaseSwitch<Adapter> modelSwitch =
+		new BaseSwitch<Adapter>() {
+			@Override
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.base.base.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //BaseAdapterFactory

+ 114 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/base/util/BaseSwitch.java

@@ -0,0 +1,114 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.base.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.yakindu.base.base.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.base.base.BasePackage
+ * @generated
+ */
+public class BaseSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static BasePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BaseSwitch() {
+		if (modelPackage == null) {
+			modelPackage = BasePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case BasePackage.NAMED_ELEMENT: {
+				NamedElement namedElement = (NamedElement)theEObject;
+				T result = caseNamedElement(namedElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //BaseSwitch

+ 21 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Event.java

@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.base.types.TypesPackage#getEvent()
+ * @model
+ * @generated
+ */
+public interface Event extends Feature {
+} // Event

+ 2 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Feature.java

@@ -6,6 +6,8 @@
  */
 package org.yakindu.base.types;
 
+import org.yakindu.base.base.NamedElement;
+
 
 /**
  * <!-- begin-user-doc -->

+ 2 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Parameter.java

@@ -6,6 +6,8 @@
  */
 package org.yakindu.base.types;
 
+import org.yakindu.base.base.NamedElement;
+
 
 /**
  * <!-- begin-user-doc -->

+ 1 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Type.java

@@ -7,6 +7,7 @@
 package org.yakindu.base.types;
 
 import org.eclipse.emf.common.util.EList;
+import org.yakindu.base.base.NamedElement;
 
 /**
  * <!-- begin-user-doc -->

+ 9 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesFactory.java

@@ -70,6 +70,15 @@ public interface TypesFactory extends EFactory {
 	 */
 	Library createLibrary();
 
+	/**
+	 * Returns a new object of class '<em>Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Event</em>'.
+	 * @generated
+	 */
+	Event createEvent();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->

+ 117 - 115
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -10,6 +10,8 @@ import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
+import org.yakindu.base.base.BasePackage;
+import org.eclipse.emf.ecore.EcorePackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -60,125 +62,164 @@ public interface TypesPackage extends EPackage {
 	TypesPackage eINSTANCE = org.yakindu.base.types.impl.TypesPackageImpl.init();
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.NamedElement <em>Named Element</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.TypeImpl <em>Type</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.NamedElement
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getNamedElement()
+	 * @see org.yakindu.base.types.impl.TypeImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getType()
 	 * @generated
 	 */
-	int NAMED_ELEMENT = 6;
+	int TYPE = 1;
 
 	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * The meta object id for the '{@link org.yakindu.base.types.TypedElement <em>Typed Element</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.TypedElement
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getTypedElement()
 	 * @generated
-	 * @ordered
 	 */
-	int NAMED_ELEMENT__NAME = 0;
+	int TYPED_ELEMENT = 6;
 
 	/**
-	 * The number of structural features of the '<em>Named Element</em>' class.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.FeatureImpl <em>Feature</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.FeatureImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getFeature()
 	 * @generated
-	 * @ordered
 	 */
-	int NAMED_ELEMENT_FEATURE_COUNT = 1;
+	int FEATURE = 2;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.TypeImpl <em>Type</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.OperationImpl <em>Operation</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.TypeImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getType()
+	 * @see org.yakindu.base.types.impl.OperationImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getOperation()
 	 * @generated
 	 */
-	int TYPE = 0;
+	int OPERATION = 3;
 
 	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.PropertyImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 4;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.ParameterImpl <em>Parameter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.ParameterImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getParameter()
+	 * @generated
+	 */
+	int PARAMETER = 5;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.LibraryImpl <em>Library</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.LibraryImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getLibrary()
+	 * @generated
+	 */
+	int LIBRARY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Types</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE__NAME = NAMED_ELEMENT__NAME;
+	int LIBRARY__TYPES = 0;
 
 	/**
-	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE__FEATURES = NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int LIBRARY__ID = 1;
 
 	/**
-	 * The feature id for the '<em><b>Super Types</b></em>' reference list.
+	 * The number of structural features of the '<em>Library</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE__SUPER_TYPES = NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int LIBRARY_FEATURE_COUNT = 2;
 
 	/**
-	 * The feature id for the '<em><b>Owning Library</b></em>' container reference.
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE__OWNING_LIBRARY = NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int TYPE__NAME = BasePackage.NAMED_ELEMENT__NAME;
 
 	/**
-	 * The number of structural features of the '<em>Type</em>' class.
+	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int TYPE__FEATURES = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.TypedElement <em>Typed Element</em>}' class.
+	 * The feature id for the '<em><b>Super Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE__SUPER_TYPES = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Owning Library</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.TypedElement
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getTypedElement()
 	 * @generated
+	 * @ordered
 	 */
-	int TYPED_ELEMENT = 5;
+	int TYPE__OWNING_LIBRARY = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * The number of structural features of the '<em>Type</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPED_ELEMENT__TYPE = 0;
+	int TYPE_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
-	 * The number of structural features of the '<em>Typed Element</em>' class.
+	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TYPED_ELEMENT_FEATURE_COUNT = 1;
+	int TYPED_ELEMENT__TYPE = 0;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.FeatureImpl <em>Feature</em>}' class.
+	 * The number of structural features of the '<em>Typed Element</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.FeatureImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getFeature()
 	 * @generated
+	 * @ordered
 	 */
-	int FEATURE = 1;
+	int TYPED_ELEMENT_FEATURE_COUNT = 1;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -216,16 +257,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	int FEATURE_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 2;
 
-	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.OperationImpl <em>Operation</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.OperationImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getOperation()
-	 * @generated
-	 */
-	int OPERATION = 2;
-
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -271,16 +302,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	int OPERATION_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 1;
 
-	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.PropertyImpl <em>Property</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.PropertyImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getProperty()
-	 * @generated
-	 */
-	int PROPERTY = 3;
-
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -317,16 +338,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PROPERTY_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 0;
 
-	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.ParameterImpl <em>Parameter</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.ParameterImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getParameter()
-	 * @generated
-	 */
-	int PARAMETER = 4;
-
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -363,42 +374,52 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PARAMETER_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 2;
 
+
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.LibraryImpl <em>Library</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.EventImpl <em>Event</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.LibraryImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getLibrary()
+	 * @see org.yakindu.base.types.impl.EventImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getEvent()
 	 * @generated
 	 */
-	int LIBRARY = 7;
+	int EVENT = 7;
 
 	/**
-	 * The feature id for the '<em><b>Types</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LIBRARY__TYPES = 0;
+	int EVENT__TYPE = FEATURE__TYPE;
 
 	/**
-	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LIBRARY__ID = 1;
+	int EVENT__NAME = FEATURE__NAME;
 
 	/**
-	 * The number of structural features of the '<em>Library</em>' class.
+	 * The feature id for the '<em><b>Owning Type</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LIBRARY_FEATURE_COUNT = 2;
+	int EVENT__OWNING_TYPE = FEATURE__OWNING_TYPE;
+
+	/**
+	 * The number of structural features of the '<em>Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 0;
 
 
 	/**
@@ -538,27 +559,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	EReference getTypedElement_Type();
 
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.base.types.NamedElement <em>Named Element</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Named Element</em>'.
-	 * @see org.yakindu.base.types.NamedElement
-	 * @generated
-	 */
-	EClass getNamedElement();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.base.types.NamedElement#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.yakindu.base.types.NamedElement#getName()
-	 * @see #getNamedElement()
-	 * @generated
-	 */
-	EAttribute getNamedElement_Name();
-
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.Library <em>Library</em>}'.
 	 * <!-- begin-user-doc -->
@@ -591,6 +591,16 @@ public interface TypesPackage extends EPackage {
 	 */
 	EAttribute getLibrary_Id();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.base.types.Event <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Event</em>'.
+	 * @see org.yakindu.base.types.Event
+	 * @generated
+	 */
+	EClass getEvent();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -729,24 +739,6 @@ public interface TypesPackage extends EPackage {
 		 */
 		EReference TYPED_ELEMENT__TYPE = eINSTANCE.getTypedElement_Type();
 
-		/**
-		 * The meta object literal for the '{@link org.yakindu.base.types.NamedElement <em>Named Element</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.base.types.NamedElement
-		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getNamedElement()
-		 * @generated
-		 */
-		EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
-
-		/**
-		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
-
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.LibraryImpl <em>Library</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -773,6 +765,16 @@ public interface TypesPackage extends EPackage {
 		 */
 		EAttribute LIBRARY__ID = eINSTANCE.getLibrary_Id();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.base.types.impl.EventImpl <em>Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.types.impl.EventImpl
+		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getEvent()
+		 * @generated
+		 */
+		EClass EVENT = eINSTANCE.getEvent();
+
 	}
 
 } //TypesPackage

+ 42 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EventImpl.java

@@ -0,0 +1,42 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.yakindu.base.types.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.yakindu.base.types.Event;
+import org.yakindu.base.types.TypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EventImpl extends FeatureImpl implements Event {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return TypesPackage.Literals.EVENT;
+	}
+
+} //EventImpl

+ 6 - 7
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/FeatureImpl.java

@@ -8,17 +8,14 @@ package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-
 import org.eclipse.emf.ecore.util.EcoreUtil;
-
+import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.Feature;
-import org.yakindu.base.types.NamedElement;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesPackage;
 
@@ -192,6 +189,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
@@ -255,6 +253,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -319,7 +318,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (derivedFeatureID) {
-				case TypesPackage.FEATURE__NAME: return TypesPackage.NAMED_ELEMENT__NAME;
+				case TypesPackage.FEATURE__NAME: return BasePackage.NAMED_ELEMENT__NAME;
 				default: return -1;
 			}
 		}
@@ -335,7 +334,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (baseFeatureID) {
-				case TypesPackage.NAMED_ELEMENT__NAME: return TypesPackage.FEATURE__NAME;
+				case BasePackage.NAMED_ELEMENT__NAME: return TypesPackage.FEATURE__NAME;
 				default: return -1;
 			}
 		}

+ 0 - 5
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/LibraryImpl.java

@@ -10,18 +10,13 @@ import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.base.types.Library;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesPackage;

+ 0 - 4
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java

@@ -9,15 +9,11 @@ package org.yakindu.base.types.impl;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.Parameter;
 import org.yakindu.base.types.TypesPackage;

+ 6 - 7
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java

@@ -8,16 +8,13 @@ package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-
 import org.eclipse.emf.ecore.util.EcoreUtil;
-
-import org.yakindu.base.types.NamedElement;
+import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.Parameter;
 import org.yakindu.base.types.Type;
@@ -193,6 +190,7 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
@@ -256,6 +254,7 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -320,7 +319,7 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (derivedFeatureID) {
-				case TypesPackage.PARAMETER__NAME: return TypesPackage.NAMED_ELEMENT__NAME;
+				case TypesPackage.PARAMETER__NAME: return BasePackage.NAMED_ELEMENT__NAME;
 				default: return -1;
 			}
 		}
@@ -336,7 +335,7 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (baseFeatureID) {
-				case TypesPackage.NAMED_ELEMENT__NAME: return TypesPackage.PARAMETER__NAME;
+				case BasePackage.NAMED_ELEMENT__NAME: return TypesPackage.PARAMETER__NAME;
 				default: return -1;
 			}
 		}

+ 0 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PropertyImpl.java

@@ -7,7 +7,6 @@
 package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.TypesPackage;
 

+ 2 - 59
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeImpl.java

@@ -10,20 +10,15 @@ import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.EObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
-
+import org.yakindu.base.base.impl.NamedElementImpl;
 import org.yakindu.base.types.Feature;
 import org.yakindu.base.types.Library;
 import org.yakindu.base.types.Type;
@@ -36,7 +31,6 @@ import org.yakindu.base.types.TypesPackage;
  * <p>
  * The following features are implemented:
  * <ul>
- *   <li>{@link org.yakindu.base.types.impl.TypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeImpl#getFeatures <em>Features</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeImpl#getSuperTypes <em>Super Types</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeImpl#getOwningLibrary <em>Owning Library</em>}</li>
@@ -45,27 +39,7 @@ import org.yakindu.base.types.TypesPackage;
  *
  * @generated
  */
-public class TypeImpl extends EObjectImpl implements Type {
-	/**
-	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String NAME_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected String name = NAME_EDEFAULT;
-
+public class TypeImpl extends NamedElementImpl implements Type {
 	/**
 	 * The cached value of the '{@link #getFeatures() <em>Features</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -105,27 +79,6 @@ public class TypeImpl extends EObjectImpl implements Type {
 		return TypesPackage.Literals.TYPE;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setName(String newName) {
-		String oldName = name;
-		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.TYPE__NAME, oldName, name));
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -248,8 +201,6 @@ public class TypeImpl extends EObjectImpl implements Type {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case TypesPackage.TYPE__NAME:
-				return getName();
 			case TypesPackage.TYPE__FEATURES:
 				return getFeatures();
 			case TypesPackage.TYPE__SUPER_TYPES:
@@ -269,9 +220,6 @@ public class TypeImpl extends EObjectImpl implements Type {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case TypesPackage.TYPE__NAME:
-				setName((String)newValue);
-				return;
 			case TypesPackage.TYPE__FEATURES:
 				getFeatures().clear();
 				getFeatures().addAll((Collection<? extends Feature>)newValue);
@@ -295,9 +243,6 @@ public class TypeImpl extends EObjectImpl implements Type {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case TypesPackage.TYPE__NAME:
-				setName(NAME_EDEFAULT);
-				return;
 			case TypesPackage.TYPE__FEATURES:
 				getFeatures().clear();
 				return;
@@ -319,8 +264,6 @@ public class TypeImpl extends EObjectImpl implements Type {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case TypesPackage.TYPE__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case TypesPackage.TYPE__FEATURES:
 				return features != null && !features.isEmpty();
 			case TypesPackage.TYPE__SUPER_TYPES:

+ 20 - 4
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesFactoryImpl.java

@@ -9,12 +9,17 @@ package org.yakindu.base.types.impl;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
-
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
-
 import org.yakindu.base.types.*;
+import org.yakindu.base.types.Event;
+import org.yakindu.base.types.Library;
+import org.yakindu.base.types.Operation;
+import org.yakindu.base.types.Parameter;
+import org.yakindu.base.types.Property;
+import org.yakindu.base.types.Type;
+import org.yakindu.base.types.TypesFactory;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -60,11 +65,12 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 	@Override
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
+			case TypesPackage.LIBRARY: return createLibrary();
 			case TypesPackage.TYPE: return createType();
 			case TypesPackage.OPERATION: return createOperation();
 			case TypesPackage.PROPERTY: return createProperty();
 			case TypesPackage.PARAMETER: return createParameter();
-			case TypesPackage.LIBRARY: return createLibrary();
+			case TypesPackage.EVENT: return createEvent();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -120,6 +126,16 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 		return library;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Event createEvent() {
+		EventImpl event = new EventImpl();
+		return event;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 61 - 107
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -19,78 +19,71 @@ import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!--
  * end-user-doc -->
- * 
  * @generated
  */
 public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected String packageFilename = "types.ecore";
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass typeEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass featureEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass operationEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass propertyEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass parameterEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private EClass typedElementEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
-	private EClass namedElementEClass = null;
+	private EClass libraryEClass = null;
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass libraryEClass = null;
+	private EClass eventEClass = null;
 
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
@@ -113,7 +106,6 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	private static boolean isInited = false;
@@ -132,17 +124,16 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	 * @generated
 	 */
 	public static TypesPackage init() {
-		if (isInited)
-			return (TypesPackage) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI);
+		if (isInited) return (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
 
 		// Obtain or create and register package
-		TypesPackageImpl theTypesPackage = (TypesPackageImpl) (EPackage.Registry.INSTANCE
-				.get(eNS_URI) instanceof TypesPackageImpl ? EPackage.Registry.INSTANCE
-				.get(eNS_URI) : new TypesPackageImpl());
+		TypesPackageImpl theTypesPackage = (TypesPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof TypesPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new TypesPackageImpl());
 
 		isInited = true;
 
+		// Initialize simple dependencies
+		BasePackage.eINSTANCE.eClass();
+
 		// Load packages
 		theTypesPackage.loadPackage();
 
@@ -152,6 +143,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		// Mark meta-data to indicate it can't be changed
 		theTypesPackage.freeze();
 
+  
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(TypesPackage.eNS_URI, theTypesPackage);
 		return theTypesPackage;
@@ -159,273 +151,235 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getType() {
 		if (typeEClass == null) {
-			typeEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(0);
+			typeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(1);
 		}
 		return typeEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getType_Features() {
-		return (EReference) getType().getEStructuralFeatures().get(0);
+        return (EReference)getType().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getType_SuperTypes() {
-		return (EReference) getType().getEStructuralFeatures().get(1);
+        return (EReference)getType().getEStructuralFeatures().get(1);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getType_OwningLibrary() {
-		return (EReference) getType().getEStructuralFeatures().get(2);
+        return (EReference)getType().getEStructuralFeatures().get(2);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getFeature() {
 		if (featureEClass == null) {
-			featureEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(1);
+			featureEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(2);
 		}
 		return featureEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getFeature_OwningType() {
-		return (EReference) getFeature().getEStructuralFeatures().get(0);
+        return (EReference)getFeature().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getOperation() {
 		if (operationEClass == null) {
-			operationEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(2);
+			operationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(3);
 		}
 		return operationEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getOperation_Parameters() {
-		return (EReference) getOperation().getEStructuralFeatures().get(0);
+        return (EReference)getOperation().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getProperty() {
 		if (propertyEClass == null) {
-			propertyEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(3);
+			propertyEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(4);
 		}
 		return propertyEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getParameter() {
 		if (parameterEClass == null) {
-			parameterEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(4);
+			parameterEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(5);
 		}
 		return parameterEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getParameter_OwningOperation() {
-		return (EReference) getParameter().getEStructuralFeatures().get(0);
+        return (EReference)getParameter().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getTypedElement() {
 		if (typedElementEClass == null) {
-			typedElementEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(5);
+			typedElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(6);
 		}
 		return typedElementEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getTypedElement_Type() {
-		return (EReference) getTypedElement().getEStructuralFeatures().get(0);
+        return (EReference)getTypedElement().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public EClass getNamedElement() {
-		if (namedElementEClass == null) {
-			namedElementEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(6);
-		}
-		return namedElementEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public EAttribute getNamedElement_Name() {
-		return (EAttribute) getNamedElement().getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EClass getLibrary() {
 		if (libraryEClass == null) {
-			libraryEClass = (EClass) EPackage.Registry.INSTANCE
-					.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(7);
+			libraryEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(0);
 		}
 		return libraryEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EReference getLibrary_Types() {
-		return (EReference) getLibrary().getEStructuralFeatures().get(0);
+        return (EReference)getLibrary().getEStructuralFeatures().get(0);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public EAttribute getLibrary_Id() {
-		return (EAttribute) getLibrary().getEStructuralFeatures().get(1);
+        return (EAttribute)getLibrary().getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEvent() {
+		if (eventEClass == null) {
+			eventEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI).getEClassifiers().get(7);
+		}
+		return eventEClass;
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public TypesFactory getTypesFactory() {
-		return (TypesFactory) getEFactoryInstance();
+		return (TypesFactory)getEFactoryInstance();
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private boolean isLoaded = false;
 
 	/**
-	 * Laods the package and any sub-packages from their serialized form. <!--
-	 * begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * Laods the package and any sub-packages from their serialized form.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public void loadPackage() {
-		if (isLoaded)
-			return;
+		if (isLoaded) return;
 		isLoaded = true;
 
 		URL url = getClass().getResource(packageFilename);
 		if (url == null) {
-			throw new RuntimeException("Missing serialized package: "
-					+ packageFilename);
+			throw new RuntimeException("Missing serialized package: " + packageFilename);
 		}
 		URI uri = URI.createURI(url.toString());
 		Resource resource = new EcoreResourceFactoryImpl().createResource(uri);
 		try {
 			resource.load(null);
-		} catch (IOException exception) {
+		}
+		catch (IOException exception) {
 			throw new WrappedException(exception);
 		}
-		initializeFromLoadedEPackage(this, (EPackage) resource.getContents()
-				.get(0));
+		initializeFromLoadedEPackage(this, (EPackage)resource.getContents().get(0));
 		createResource(eNS_URI);
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private boolean isFixed = false;
 
 	/**
-	 * Fixes up the loaded package, to make it appear as if it had been
-	 * programmatically built. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * Fixes up the loaded package, to make it appear as if it had been programmatically built.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public void fixPackageContents() {
-		if (isFixed)
-			return;
+		if (isFixed) return;
 		isFixed = true;
 		fixEClassifiers();
 	}
 
 	/**
-	 * Sets the instance class on the given classifier. <!-- begin-user-doc -->
+	 * Sets the instance class on the given classifier.
+	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	protected void fixInstanceClass(EClassifier eClassifier) {
 		if (eClassifier.getInstanceClassName() == null) {
-			eClassifier.setInstanceClassName("org.yakindu.base.types."
-					+ eClassifier.getName());
+			eClassifier.setInstanceClassName("org.yakindu.base.types." + eClassifier.getName());
 			setGeneratedClassName(eClassifier);
 		}
 	}

+ 9 - 11
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/types.ecore

@@ -3,7 +3,12 @@
     xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="types"
     nsURI="http://www.yakindu.org/base/types/2.0.0" nsPrefix="types">
-  <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Library">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+        eType="#//Type" containment="true" eOpposite="#//Type/owningLibrary"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
         eType="#//Feature" containment="true" eOpposite="#//Feature/owningType"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
@@ -11,7 +16,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningLibrary" eType="#//Library"
         eOpposite="#//Library/types"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//TypedElement #//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//TypedElement http://www.yakindu.org/base/base/2.0.0#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningType" eType="#//Type"
         eOpposite="#//Type/features"/>
   </eClassifiers>
@@ -20,19 +25,12 @@
         eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Feature"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement #//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement http://www.yakindu.org/base/base/2.0.0#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningOperation" eType="#//Operation"
         eOpposite="#//Operation/parameters"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" interface="true">
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Type"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Library">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
-        eType="#//Type" containment="true" eOpposite="#//Type/owningLibrary"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Feature"/>
 </ecore:EPackage>

+ 34 - 10
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java

@@ -8,12 +8,18 @@ package org.yakindu.base.types.util;
 
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
-
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-
 import org.eclipse.emf.ecore.EObject;
-
-import org.yakindu.base.types.*;
+import org.yakindu.base.base.NamedElement;
+import org.yakindu.base.types.Event;
+import org.yakindu.base.types.Feature;
+import org.yakindu.base.types.Library;
+import org.yakindu.base.types.Operation;
+import org.yakindu.base.types.Parameter;
+import org.yakindu.base.types.Property;
+import org.yakindu.base.types.Type;
+import org.yakindu.base.types.TypedElement;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -71,6 +77,10 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 	 */
 	protected TypesSwitch<Adapter> modelSwitch =
 		new TypesSwitch<Adapter>() {
+			@Override
+			public Adapter caseLibrary(Library object) {
+				return createLibraryAdapter();
+			}
 			@Override
 			public Adapter caseType(Type object) {
 				return createTypeAdapter();
@@ -96,12 +106,12 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 				return createTypedElementAdapter();
 			}
 			@Override
-			public Adapter caseNamedElement(NamedElement object) {
-				return createNamedElementAdapter();
+			public Adapter caseEvent(Event object) {
+				return createEventAdapter();
 			}
 			@Override
-			public Adapter caseLibrary(Library object) {
-				return createLibraryAdapter();
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
 			}
 			@Override
 			public Adapter defaultCase(EObject object) {
@@ -208,13 +218,13 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.NamedElement <em>Named Element</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.yakindu.base.types.NamedElement
+	 * @see org.yakindu.base.base.NamedElement
 	 * @generated
 	 */
 	public Adapter createNamedElementAdapter() {
@@ -235,6 +245,20 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.Event <em>Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.base.types.Event
+	 * @generated
+	 */
+	public Adapter createEventAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->

+ 37 - 12
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

@@ -8,10 +8,17 @@ package org.yakindu.base.types.util;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-
 import org.eclipse.emf.ecore.util.Switch;
-
-import org.yakindu.base.types.*;
+import org.yakindu.base.base.NamedElement;
+import org.yakindu.base.types.Event;
+import org.yakindu.base.types.Feature;
+import org.yakindu.base.types.Library;
+import org.yakindu.base.types.Operation;
+import org.yakindu.base.types.Parameter;
+import org.yakindu.base.types.Property;
+import org.yakindu.base.types.Type;
+import org.yakindu.base.types.TypedElement;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -70,6 +77,12 @@ public class TypesSwitch<T> extends Switch<T> {
 	@Override
 	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
+			case TypesPackage.LIBRARY: {
+				Library library = (Library)theEObject;
+				T result = caseLibrary(library);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case TypesPackage.TYPE: {
 				Type type = (Type)theEObject;
 				T result = caseType(type);
@@ -117,15 +130,12 @@ public class TypesSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case TypesPackage.NAMED_ELEMENT: {
-				NamedElement namedElement = (NamedElement)theEObject;
-				T result = caseNamedElement(namedElement);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case TypesPackage.LIBRARY: {
-				Library library = (Library)theEObject;
-				T result = caseLibrary(library);
+			case TypesPackage.EVENT: {
+				Event event = (Event)theEObject;
+				T result = caseEvent(event);
+				if (result == null) result = caseFeature(event);
+				if (result == null) result = caseTypedElement(event);
+				if (result == null) result = caseNamedElement(event);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -253,6 +263,21 @@ public class TypesSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEvent(Event object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->