Просмотр исходного кода

Added CompositeState, OrthogonalState and Subchart State

Andreas Mülder 14 лет назад
Родитель
Сommit
c4a2db03db
100 измененных файлов с 1994 добавлено и 1241 удалено
  1. BIN
      plugins/org.yakindu.sct.model.sgraph.edit/icons/full/ctool16/CreateRegion_vertices_SubmachineState.gif
  2. BIN
      plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/SubmachineState.gif
  3. BIN
      plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/TimeEvent.gif
  4. 8 0
      plugins/org.yakindu.sct.model.sgraph.edit/plugin.properties
  5. 238 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/AbstractStateItemProvider.java
  6. 1 1
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/FinalStateItemProvider.java
  7. 10 5
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/RegionItemProvider.java
  8. 48 24
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SGraphItemProviderAdapterFactory.java
  9. 8 140
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/StateItemProvider.java
  10. 171 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SubmachineStateItemProvider.java
  11. 5 4
      plugins/org.yakindu.sct.model.sgraph.resource/src/org/yakindu/sct/model/sgraph/resource/services/StateInjectionService.java
  12. 19 16
      plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore
  13. 33 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/AbstractState.java
  14. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/FinalState.java
  15. 18 9
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphFactory.java
  16. 308 187
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java
  17. 8 67
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/State.java
  18. 64 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SubmachineState.java
  19. 357 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/AbstractStateImpl.java
  20. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/FinalStateImpl.java
  21. 23 11
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java
  22. 67 47
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java
  23. 12 392
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StateImpl.java
  24. 168 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SubmachineStateImpl.java
  25. 19 16
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/sgraph.ecore
  26. 42 4
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java
  27. 68 12
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java
  28. 152 70
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphValidator.java
  29. 1 1
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/AbstractSTextUiModule.java
  30. 4 2
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java
  31. 2 3
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java
  32. 9 6
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java
  33. 9 18
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java
  34. 4 5
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/internal/STextActivator.java
  35. 1 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/STextStandaloneSetupGenerated.java
  36. 8 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java
  37. 1 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/STextAntlrTokenFileProvider.java
  38. 2 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/STextParser.java
  39. 9 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java
  40. 12 16
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java
  41. 18 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java
  42. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Operation.java
  43. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionEffect.java
  44. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionProperties.java
  45. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionTrigger.java
  46. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Root.java
  47. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StateDeclaration.java
  48. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StatechartDefinition.java
  49. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java
  50. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AlwaysEventImpl.java
  51. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AssignmentImpl.java
  52. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseAndExpressionImpl.java
  53. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseOrExpressionImpl.java
  54. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseXorExpressionImpl.java
  55. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BuiltinEventSpecImpl.java
  56. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ClockImpl.java
  57. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ConditionalExpressionImpl.java
  58. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/DefRootImpl.java
  59. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ElementReferenceExpressionImpl.java
  60. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryEventImpl.java
  61. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryPointSpecImpl.java
  62. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntrypointImpl.java
  63. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventDefinitionImpl.java
  64. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventDerivationImpl.java
  65. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventRaisingImpl.java
  66. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventSpecImpl.java
  67. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitEventImpl.java
  68. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitPointSpecImpl.java
  69. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitpointImpl.java
  70. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExpressionImpl.java
  71. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/InterfaceScopeImpl.java
  72. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/InternalScopeImpl.java
  73. 0 5
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java
  74. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalAndExpressionImpl.java
  75. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalNotExpressionImpl.java
  76. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalOrExpressionImpl.java
  77. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalRelationExpressionImpl.java
  78. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalAddSubtractExpressionImpl.java
  79. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalMultiplyDivideExpressionImpl.java
  80. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalUnaryExpressionImpl.java
  81. 0 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OnCycleEventImpl.java
  82. 0 5
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OperationCallImpl.java
  83. 0 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OperationImpl.java
  84. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/PrimitiveValueExpressionImpl.java
  85. 0 5
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionEffectImpl.java
  86. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPriorityImpl.java
  87. 0 5
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPropertiesImpl.java
  88. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPropertyImpl.java
  89. 0 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionTriggerImpl.java
  90. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/RegularEventSpecImpl.java
  91. 0 5
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/RootImpl.java
  92. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ShiftExpressionImpl.java
  93. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/SimpleScopeImpl.java
  94. 0 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StateDeclarationImpl.java
  95. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StateRootImpl.java
  96. 0 6
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatechartDefinitionImpl.java
  97. 0 3
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatechartRootImpl.java
  98. 0 2
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatementImpl.java
  99. 65 4
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java
  100. 0 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java

BIN
plugins/org.yakindu.sct.model.sgraph.edit/icons/full/ctool16/CreateRegion_vertices_SubmachineState.gif


BIN
plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/SubmachineState.gif


BIN
plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/TimeEvent.gif


+ 8 - 0
plugins/org.yakindu.sct.model.sgraph.edit/plugin.properties

@@ -122,3 +122,11 @@ _UI_State_substatechart_feature = Substatechart
 _UI_State_submachineState_feature = Submachine State
 _UI_State_compositeState_feature = Composite State
 _UI_State_simpleState_feature = Simple State
+_UI_SimpleState_type = Simple State
+_UI_CompositeState_type = Composite State
+_UI_SubmachineState_type = Submachine State
+_UI_CompositeState_subRegions_feature = Sub Regions
+_UI_CompositeState_orthogonal_feature = Orthogonal
+_UI_SubmachineState_substatechart_feature = Substatechart
+_UI_AbstractState_type = Abstract State
+_UI_State_orthogonal_feature = Orthogonal

+ 238 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/AbstractStateItemProvider.java

@@ -0,0 +1,238 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.yakindu.sct.model.sgraph.AbstractState;
+import org.yakindu.sct.model.sgraph.SGraphFactory;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sgraph.AbstractState} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AbstractStateItemProvider
+	extends VertexItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AbstractStateItemProvider(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);
+
+			addExpressionPropertyDescriptor(object);
+			addReactionsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Expression feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExpressionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ExpressionElement_expression_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ExpressionElement_expression_feature", "_UI_ExpressionElement_type"),
+				 SGraphPackage.Literals.EXPRESSION_ELEMENT__EXPRESSION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Reactions feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReactionsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ReactiveElement_reactions_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ReactiveElement_reactions_feature", "_UI_ReactiveElement_type"),
+				 SGraphPackage.Literals.REACTIVE_ELEMENT__REACTIONS,
+				 false,
+				 false,
+				 false,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS);
+			childrenFeatures.add(SGraphPackage.Literals.SCOPED_ELEMENT__SCOPES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AbstractState)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_AbstractState_type") :
+			getString("_UI_AbstractState_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(AbstractState.class)) {
+			case SGraphPackage.ABSTRACT_STATE__EXPRESSION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS,
+				 SGraphFactory.eINSTANCE.createTransition()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.SCOPED_ELEMENT__SCOPES,
+				 SGraphFactory.eINSTANCE.createScope()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS ||
+			childFeature == SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/FinalStateItemProvider.java

@@ -32,7 +32,7 @@ import org.yakindu.sct.model.sgraph.SGraphPackage;
  * @generated
  */
 public class FinalStateItemProvider
-	extends StateItemProvider
+	extends AbstractStateItemProvider
 	implements
 		IEditingDomainItemProvider,
 		IStructuredItemContentProvider,

+ 10 - 5
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/RegionItemProvider.java

@@ -187,11 +187,6 @@ public class RegionItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add
-			(createChildParameter
-				(SGraphPackage.Literals.REGION__VERTICES,
-				 SGraphFactory.eINSTANCE.createState()));
-
 		newChildDescriptors.add
 			(createChildParameter
 				(SGraphPackage.Literals.REGION__VERTICES,
@@ -221,6 +216,16 @@ public class RegionItemProvider
 			(createChildParameter
 				(SGraphPackage.Literals.REGION__VERTICES,
 				 SGraphFactory.eINSTANCE.createSynchronization()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.REGION__VERTICES,
+				 SGraphFactory.eINSTANCE.createState()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.REGION__VERTICES,
+				 SGraphFactory.eINSTANCE.createSubmachineState()));
 	}
 
 }

+ 48 - 24
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SGraphItemProviderAdapterFactory.java

@@ -153,29 +153,6 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		return finalStateItemProvider;
 	}
 
-	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.State} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected StateItemProvider stateItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.yakindu.sct.model.sgraph.State}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createStateAdapter() {
-		if (stateItemProvider == null) {
-			stateItemProvider = new StateItemProvider(this);
-		}
-
-		return stateItemProvider;
-	}
-
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.Junction} instances.
 	 * <!-- begin-user-doc -->
@@ -337,6 +314,52 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		return synchronizationItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.State} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected StateItemProvider stateItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sgraph.State}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createStateAdapter() {
+		if (stateItemProvider == null) {
+			stateItemProvider = new StateItemProvider(this);
+		}
+
+		return stateItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.SubmachineState} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SubmachineStateItemProvider submachineStateItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sgraph.SubmachineState}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSubmachineStateAdapter() {
+		if (submachineStateItemProvider == null) {
+			submachineStateItemProvider = new SubmachineStateItemProvider(this);
+		}
+
+		return submachineStateItemProvider;
+	}
+
 	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
@@ -439,7 +462,6 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		if (regionItemProvider != null) regionItemProvider.dispose();
 		if (transitionItemProvider != null) transitionItemProvider.dispose();
 		if (finalStateItemProvider != null) finalStateItemProvider.dispose();
-		if (stateItemProvider != null) stateItemProvider.dispose();
 		if (junctionItemProvider != null) junctionItemProvider.dispose();
 		if (choiceItemProvider != null) choiceItemProvider.dispose();
 		if (statechartItemProvider != null) statechartItemProvider.dispose();
@@ -447,6 +469,8 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		if (exitItemProvider != null) exitItemProvider.dispose();
 		if (scopeItemProvider != null) scopeItemProvider.dispose();
 		if (synchronizationItemProvider != null) synchronizationItemProvider.dispose();
+		if (stateItemProvider != null) stateItemProvider.dispose();
+		if (submachineStateItemProvider != null) submachineStateItemProvider.dispose();
 	}
 
 }

+ 8 - 140
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/StateItemProvider.java

@@ -37,7 +37,7 @@ import org.yakindu.sct.model.sgraph.State;
  * @generated
  */
 public class StateItemProvider
-	extends VertexItemProvider
+	extends AbstractStateItemProvider
 	implements
 		IEditingDomainItemProvider,
 		IStructuredItemContentProvider,
@@ -72,140 +72,25 @@ public class StateItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
-			addExpressionPropertyDescriptor(object);
-			addReactionsPropertyDescriptor(object);
-			addSubstatechartPropertyDescriptor(object);
-			addSubmachineStatePropertyDescriptor(object);
-			addCompositeStatePropertyDescriptor(object);
-			addSimpleStatePropertyDescriptor(object);
+			addOrthogonalPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
 	/**
-	 * This adds a property descriptor for the Expression feature.
+	 * This adds a property descriptor for the Orthogonal feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected void addExpressionPropertyDescriptor(Object object) {
+	protected void addOrthogonalPropertyDescriptor(Object object) {
 		itemPropertyDescriptors.add
 			(createItemPropertyDescriptor
 				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
 				 getResourceLocator(),
-				 getString("_UI_ExpressionElement_expression_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_ExpressionElement_expression_feature", "_UI_ExpressionElement_type"),
-				 SGraphPackage.Literals.EXPRESSION_ELEMENT__EXPRESSION,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Reactions feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addReactionsPropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_ReactiveElement_reactions_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_ReactiveElement_reactions_feature", "_UI_ReactiveElement_type"),
-				 SGraphPackage.Literals.REACTIVE_ELEMENT__REACTIONS,
-				 false,
-				 false,
-				 false,
-				 null,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Substatechart feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addSubstatechartPropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_State_substatechart_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_State_substatechart_feature", "_UI_State_type"),
-				 SGraphPackage.Literals.STATE__SUBSTATECHART,
-				 true,
-				 false,
-				 true,
-				 null,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Submachine State feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addSubmachineStatePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_State_submachineState_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_State_submachineState_feature", "_UI_State_type"),
-				 SGraphPackage.Literals.STATE__SUBMACHINE_STATE,
-				 false,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Composite State feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addCompositeStatePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_State_compositeState_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_State_compositeState_feature", "_UI_State_type"),
-				 SGraphPackage.Literals.STATE__COMPOSITE_STATE,
-				 false,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Simple State feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addSimpleStatePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_State_simpleState_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_State_simpleState_feature", "_UI_State_type"),
-				 SGraphPackage.Literals.STATE__SIMPLE_STATE,
+				 getString("_UI_State_orthogonal_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_State_orthogonal_feature", "_UI_State_type"),
+				 SGraphPackage.Literals.STATE__ORTHOGONAL,
 				 false,
 				 false,
 				 false,
@@ -226,8 +111,6 @@ public class StateItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS);
-			childrenFeatures.add(SGraphPackage.Literals.SCOPED_ELEMENT__SCOPES);
 			childrenFeatures.add(SGraphPackage.Literals.STATE__SUB_REGIONS);
 		}
 		return childrenFeatures;
@@ -283,14 +166,9 @@ public class StateItemProvider
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(State.class)) {
-			case SGraphPackage.STATE__EXPRESSION:
-			case SGraphPackage.STATE__SUBMACHINE_STATE:
-			case SGraphPackage.STATE__COMPOSITE_STATE:
-			case SGraphPackage.STATE__SIMPLE_STATE:
+			case SGraphPackage.STATE__ORTHOGONAL:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
-			case SGraphPackage.STATE__LOCAL_REACTIONS:
-			case SGraphPackage.STATE__SCOPES:
 			case SGraphPackage.STATE__SUB_REGIONS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -309,16 +187,6 @@ public class StateItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add
-			(createChildParameter
-				(SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS,
-				 SGraphFactory.eINSTANCE.createTransition()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(SGraphPackage.Literals.SCOPED_ELEMENT__SCOPES,
-				 SGraphFactory.eINSTANCE.createScope()));
-
 		newChildDescriptors.add
 			(createChildParameter
 				(SGraphPackage.Literals.STATE__SUB_REGIONS,

+ 171 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SubmachineStateItemProvider.java

@@ -0,0 +1,171 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.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.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.yakindu.sct.model.sgraph.SGraphPackage;
+import org.yakindu.sct.model.sgraph.SubmachineState;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sgraph.SubmachineState} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SubmachineStateItemProvider
+	extends AbstractStateItemProvider
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SubmachineStateItemProvider(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);
+
+			addSubstatechartPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Substatechart feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSubstatechartPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_SubmachineState_substatechart_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_SubmachineState_substatechart_feature", "_UI_SubmachineState_type"),
+				 SGraphPackage.Literals.SUBMACHINE_STATE__SUBSTATECHART,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns SubmachineState.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SubmachineState"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((SubmachineState)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_SubmachineState_type") :
+			getString("_UI_SubmachineState_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);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS ||
+			childFeature == SGraphPackage.Literals.REACTIVE_ELEMENT__LOCAL_REACTIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}

+ 5 - 4
plugins/org.yakindu.sct.model.sgraph.resource/src/org/yakindu/sct/model/sgraph/resource/services/StateInjectionService.java

@@ -13,6 +13,7 @@ package org.yakindu.sct.model.sgraph.resource.services;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
+import org.yakindu.sct.model.sgraph.AbstractState;
 import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.SGraphFactory;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
@@ -31,10 +32,10 @@ import de.itemis.xtext.utils.gmf.resource.IMemberInjectionService;
  * 
  */
 public class StateInjectionService extends
-		AbstractXtextMemberInjectionService<State, SimpleScope> {
+		AbstractXtextMemberInjectionService<AbstractState, SimpleScope> {
 
 	@Override
-	public String getExpression(State object) {
+	public String getExpression(AbstractState object) {
 		return object.getExpression();
 	}
 
@@ -44,7 +45,7 @@ public class StateInjectionService extends
 	}
 
 	@Override
-	public void setFeatures(State original, SimpleScope rootAST) {
+	public void setFeatures(AbstractState original, SimpleScope rootAST) {
 		Scope localScope = SGraphFactory.eINSTANCE.createScope();
 		EList<Declaration> declarations = rootAST.getDeclarations();
 		localScope.getDeclarations().addAll(declarations);
@@ -53,7 +54,7 @@ public class StateInjectionService extends
 	}
 
 	public boolean isServiceFor(EObject object) {
-		return object instanceof State;
+		return object instanceof AbstractState;
 	}
 
 	public EStructuralFeature getSourceFeature() {

+ 19 - 16
plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore

@@ -35,22 +35,7 @@
         lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>
-  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Vertex #//ExpressionElement #//ReactiveElement #//ScopedElement">
-    <eAnnotations source="InjectMembers"/>
-    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
-      <details key="constraints" value="NameIsNotEmpty"/>
-    </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="subRegions" ordered="false"
-        upperBound="-1" eType="#//Region" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="submachineState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="compositeState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="simpleState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//AbstractState"/>
   <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//Declaration"/>
   <eClassifiers xsi:type="ecore:EClass" name="Junction" eSuperTypes="#//Pseudostate"/>
   <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//Declaration"/>
@@ -101,4 +86,22 @@
         eType="#//Scope" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="#//Pseudostate"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractState" abstract="true" eSuperTypes="#//Vertex #//ExpressionElement #//ReactiveElement #//ScopedElement">
+    <eAnnotations source="InjectMembers"/>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="constraints" value="NameIsNotEmpty"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//AbstractState">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subRegions" ordered="false"
+        upperBound="-1" eType="#//Region" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="orthogonal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SubmachineState" eSuperTypes="#//AbstractState">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="constraints" value="SubStatechartExists"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 33 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/AbstractState.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.sct.model.sgraph.SGraphPackage#getAbstractState()
+ * @model abstract="true"
+ *        annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NameIsNotEmpty'"
+ * @generated
+ */
+public interface AbstractState extends Vertex, ExpressionElement, ReactiveElement, ScopedElement {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+} // AbstractState

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/FinalState.java

@@ -21,7 +21,7 @@ package org.yakindu.sct.model.sgraph;
  * @model
  * @generated
  */
-public interface FinalState extends State {
+public interface FinalState extends AbstractState {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 18 - 9
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphFactory.java

@@ -63,15 +63,6 @@ public interface SGraphFactory extends EFactory {
 	 */
 	FinalState createFinalState();
 
-	/**
-	 * Returns a new object of class '<em>State</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>State</em>'.
-	 * @generated
-	 */
-	State createState();
-
 	/**
 	 * Returns a new object of class '<em>Junction</em>'.
 	 * <!-- begin-user-doc -->
@@ -135,6 +126,24 @@ public interface SGraphFactory extends EFactory {
 	 */
 	Synchronization createSynchronization();
 
+	/**
+	 * Returns a new object of class '<em>State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>State</em>'.
+	 * @generated
+	 */
+	State createState();
+
+	/**
+	 * Returns a new object of class '<em>Submachine State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Submachine State</em>'.
+	 * @generated
+	 */
+	SubmachineState createSubmachineState();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->

+ 308 - 187
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java

@@ -263,7 +263,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getExpressionElement()
 	 * @generated
 	 */
-	int EXPRESSION_ELEMENT = 15;
+	int EXPRESSION_ELEMENT = 14;
 
 	/**
 	 * The feature id for the '<em><b>Expression</b></em>' attribute.
@@ -357,14 +357,14 @@ public interface SGraphPackage extends EPackage {
 	int TRANSITION_FEATURE_COUNT = EXPRESSION_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.StateImpl <em>State</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl <em>Abstract State</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgraph.impl.StateImpl
-	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getState()
+	 * @see org.yakindu.sct.model.sgraph.impl.AbstractStateImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getAbstractState()
 	 * @generated
 	 */
-	int STATE = 6;
+	int ABSTRACT_STATE = 22;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -373,7 +373,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__NAME = VERTEX__NAME;
+	int ABSTRACT_STATE__NAME = VERTEX__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
@@ -382,7 +382,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__PARENT_REGION = VERTEX__PARENT_REGION;
+	int ABSTRACT_STATE__PARENT_REGION = VERTEX__PARENT_REGION;
 
 	/**
 	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
@@ -391,7 +391,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS;
+	int ABSTRACT_STATE__INCOMING_TRANSITIONS = VERTEX__INCOMING_TRANSITIONS;
 
 	/**
 	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
@@ -400,7 +400,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS;
+	int ABSTRACT_STATE__OUTGOING_TRANSITIONS = VERTEX__OUTGOING_TRANSITIONS;
 
 	/**
 	 * The feature id for the '<em><b>Expression</b></em>' attribute.
@@ -409,7 +409,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__EXPRESSION = VERTEX_FEATURE_COUNT + 0;
+	int ABSTRACT_STATE__EXPRESSION = VERTEX_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
@@ -418,7 +418,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__REACTIONS = VERTEX_FEATURE_COUNT + 1;
+	int ABSTRACT_STATE__REACTIONS = VERTEX_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Local Reactions</b></em>' containment reference list.
@@ -427,7 +427,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__LOCAL_REACTIONS = VERTEX_FEATURE_COUNT + 2;
+	int ABSTRACT_STATE__LOCAL_REACTIONS = VERTEX_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
@@ -436,61 +436,26 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__SCOPES = VERTEX_FEATURE_COUNT + 3;
+	int ABSTRACT_STATE__SCOPES = VERTEX_FEATURE_COUNT + 3;
 
 	/**
-	 * The feature id for the '<em><b>Sub Regions</b></em>' containment reference list.
+	 * The number of structural features of the '<em>Abstract State</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int STATE__SUB_REGIONS = VERTEX_FEATURE_COUNT + 4;
+	int ABSTRACT_STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 4;
 
 	/**
-	 * The feature id for the '<em><b>Substatechart</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STATE__SUBSTATECHART = VERTEX_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Submachine State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STATE__SUBMACHINE_STATE = VERTEX_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>Composite State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STATE__COMPOSITE_STATE = VERTEX_FEATURE_COUNT + 7;
-
-	/**
-	 * The feature id for the '<em><b>Simple State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STATE__SIMPLE_STATE = VERTEX_FEATURE_COUNT + 8;
-
-	/**
-	 * The number of structural features of the '<em>State</em>' class.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.StateImpl <em>State</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgraph.impl.StateImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getState()
 	 * @generated
-	 * @ordered
 	 */
-	int STATE_FEATURE_COUNT = VERTEX_FEATURE_COUNT + 9;
+	int STATE = 23;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.FinalStateImpl <em>Final State</em>}' class.
@@ -509,7 +474,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__NAME = STATE__NAME;
+	int FINAL_STATE__NAME = ABSTRACT_STATE__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
@@ -518,7 +483,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__PARENT_REGION = STATE__PARENT_REGION;
+	int FINAL_STATE__PARENT_REGION = ABSTRACT_STATE__PARENT_REGION;
 
 	/**
 	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
@@ -527,7 +492,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__INCOMING_TRANSITIONS = STATE__INCOMING_TRANSITIONS;
+	int FINAL_STATE__INCOMING_TRANSITIONS = ABSTRACT_STATE__INCOMING_TRANSITIONS;
 
 	/**
 	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
@@ -536,7 +501,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__OUTGOING_TRANSITIONS = STATE__OUTGOING_TRANSITIONS;
+	int FINAL_STATE__OUTGOING_TRANSITIONS = ABSTRACT_STATE__OUTGOING_TRANSITIONS;
 
 	/**
 	 * The feature id for the '<em><b>Expression</b></em>' attribute.
@@ -545,7 +510,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__EXPRESSION = STATE__EXPRESSION;
+	int FINAL_STATE__EXPRESSION = ABSTRACT_STATE__EXPRESSION;
 
 	/**
 	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
@@ -554,7 +519,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__REACTIONS = STATE__REACTIONS;
+	int FINAL_STATE__REACTIONS = ABSTRACT_STATE__REACTIONS;
 
 	/**
 	 * The feature id for the '<em><b>Local Reactions</b></em>' containment reference list.
@@ -563,7 +528,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__LOCAL_REACTIONS = STATE__LOCAL_REACTIONS;
+	int FINAL_STATE__LOCAL_REACTIONS = ABSTRACT_STATE__LOCAL_REACTIONS;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
@@ -572,52 +537,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE__SCOPES = STATE__SCOPES;
-
-	/**
-	 * The feature id for the '<em><b>Sub Regions</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FINAL_STATE__SUB_REGIONS = STATE__SUB_REGIONS;
-
-	/**
-	 * The feature id for the '<em><b>Substatechart</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FINAL_STATE__SUBSTATECHART = STATE__SUBSTATECHART;
-
-	/**
-	 * The feature id for the '<em><b>Submachine State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FINAL_STATE__SUBMACHINE_STATE = STATE__SUBMACHINE_STATE;
-
-	/**
-	 * The feature id for the '<em><b>Composite State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FINAL_STATE__COMPOSITE_STATE = STATE__COMPOSITE_STATE;
-
-	/**
-	 * The feature id for the '<em><b>Simple State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FINAL_STATE__SIMPLE_STATE = STATE__SIMPLE_STATE;
+	int FINAL_STATE__SCOPES = ABSTRACT_STATE__SCOPES;
 
 	/**
 	 * The number of structural features of the '<em>Final State</em>' class.
@@ -626,7 +546,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FINAL_STATE_FEATURE_COUNT = STATE_FEATURE_COUNT + 0;
+	int FINAL_STATE_FEATURE_COUNT = ABSTRACT_STATE_FEATURE_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.DeclarationImpl <em>Declaration</em>}' class.
@@ -636,7 +556,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getDeclaration()
 	 * @generated
 	 */
-	int DECLARATION = 16;
+	int DECLARATION = 15;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -664,7 +584,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getVariable()
 	 * @generated
 	 */
-	int VARIABLE = 7;
+	int VARIABLE = 6;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -692,7 +612,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getJunction()
 	 * @generated
 	 */
-	int JUNCTION = 8;
+	int JUNCTION = 7;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -747,7 +667,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEvent()
 	 * @generated
 	 */
-	int EVENT = 9;
+	int EVENT = 8;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -775,7 +695,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getChoice()
 	 * @generated
 	 */
-	int CHOICE = 10;
+	int CHOICE = 9;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -830,7 +750,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getStatechart()
 	 * @generated
 	 */
-	int STATECHART = 11;
+	int STATECHART = 10;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -903,7 +823,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEntry()
 	 * @generated
 	 */
-	int ENTRY = 12;
+	int ENTRY = 11;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -967,7 +887,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getTrigger()
 	 * @generated
 	 */
-	int TRIGGER = 13;
+	int TRIGGER = 12;
 
 	/**
 	 * The number of structural features of the '<em>Trigger</em>' class.
@@ -986,7 +906,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEffect()
 	 * @generated
 	 */
-	int EFFECT = 14;
+	int EFFECT = 13;
 
 	/**
 	 * The number of structural features of the '<em>Effect</em>' class.
@@ -1005,7 +925,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReaction()
 	 * @generated
 	 */
-	int REACTION = 17;
+	int REACTION = 16;
 
 	/**
 	 * The feature id for the '<em><b>Trigger</b></em>' containment reference.
@@ -1042,7 +962,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReactiveElement()
 	 * @generated
 	 */
-	int REACTIVE_ELEMENT = 18;
+	int REACTIVE_ELEMENT = 17;
 
 	/**
 	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
@@ -1079,7 +999,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getExit()
 	 * @generated
 	 */
-	int EXIT = 19;
+	int EXIT = 18;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1134,7 +1054,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getScope()
 	 * @generated
 	 */
-	int SCOPE = 20;
+	int SCOPE = 19;
 
 	/**
 	 * The feature id for the '<em><b>Declarations</b></em>' containment reference list.
@@ -1180,7 +1100,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getScopedElement()
 	 * @generated
 	 */
-	int SCOPED_ELEMENT = 21;
+	int SCOPED_ELEMENT = 20;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
@@ -1208,7 +1128,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getSynchronization()
 	 * @generated
 	 */
-	int SYNCHRONIZATION = 22;
+	int SYNCHRONIZATION = 21;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1255,6 +1175,205 @@ public interface SGraphPackage extends EPackage {
 	 */
 	int SYNCHRONIZATION_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
 
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__NAME = ABSTRACT_STATE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__PARENT_REGION = ABSTRACT_STATE__PARENT_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__INCOMING_TRANSITIONS = ABSTRACT_STATE__INCOMING_TRANSITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__OUTGOING_TRANSITIONS = ABSTRACT_STATE__OUTGOING_TRANSITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Expression</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__EXPRESSION = ABSTRACT_STATE__EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__REACTIONS = ABSTRACT_STATE__REACTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Local Reactions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__LOCAL_REACTIONS = ABSTRACT_STATE__LOCAL_REACTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__SCOPES = ABSTRACT_STATE__SCOPES;
+
+	/**
+	 * The feature id for the '<em><b>Sub Regions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__SUB_REGIONS = ABSTRACT_STATE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Orthogonal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE__ORTHOGONAL = ABSTRACT_STATE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_FEATURE_COUNT = ABSTRACT_STATE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.SubmachineStateImpl <em>Submachine State</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgraph.impl.SubmachineStateImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getSubmachineState()
+	 * @generated
+	 */
+	int SUBMACHINE_STATE = 24;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__NAME = ABSTRACT_STATE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__PARENT_REGION = ABSTRACT_STATE__PARENT_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__INCOMING_TRANSITIONS = ABSTRACT_STATE__INCOMING_TRANSITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__OUTGOING_TRANSITIONS = ABSTRACT_STATE__OUTGOING_TRANSITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Expression</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__EXPRESSION = ABSTRACT_STATE__EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__REACTIONS = ABSTRACT_STATE__REACTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Local Reactions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__LOCAL_REACTIONS = ABSTRACT_STATE__LOCAL_REACTIONS;
+
+	/**
+	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__SCOPES = ABSTRACT_STATE__SCOPES;
+
+	/**
+	 * The feature id for the '<em><b>Substatechart</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE__SUBSTATECHART = ABSTRACT_STATE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Submachine State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBMACHINE_STATE_FEATURE_COUNT = ABSTRACT_STATE_FEATURE_COUNT + 1;
+
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.EntryKind <em>Entry Kind</em>}' enum.
 	 * <!-- begin-user-doc -->
@@ -1263,7 +1382,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEntryKind()
 	 * @generated
 	 */
-	int ENTRY_KIND = 23;
+	int ENTRY_KIND = 25;
 
 
 	/**
@@ -1447,48 +1566,15 @@ public interface SGraphPackage extends EPackage {
 	EReference getState_SubRegions();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sgraph.State#getSubstatechart <em>Substatechart</em>}'.
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgraph.State#isOrthogonal <em>Orthogonal</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Substatechart</em>'.
-	 * @see org.yakindu.sct.model.sgraph.State#getSubstatechart()
+	 * @return the meta object for the attribute '<em>Orthogonal</em>'.
+	 * @see org.yakindu.sct.model.sgraph.State#isOrthogonal()
 	 * @see #getState()
 	 * @generated
 	 */
-	EReference getState_Substatechart();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgraph.State#isSubmachineState <em>Submachine State</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Submachine State</em>'.
-	 * @see org.yakindu.sct.model.sgraph.State#isSubmachineState()
-	 * @see #getState()
-	 * @generated
-	 */
-	EAttribute getState_SubmachineState();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgraph.State#isCompositeState <em>Composite State</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Composite State</em>'.
-	 * @see org.yakindu.sct.model.sgraph.State#isCompositeState()
-	 * @see #getState()
-	 * @generated
-	 */
-	EAttribute getState_CompositeState();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgraph.State#isSimpleState <em>Simple State</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Simple State</em>'.
-	 * @see org.yakindu.sct.model.sgraph.State#isSimpleState()
-	 * @see #getState()
-	 * @generated
-	 */
-	EAttribute getState_SimpleState();
+	EAttribute getState_Orthogonal();
 
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.Variable <em>Variable</em>}'.
@@ -1771,6 +1857,37 @@ public interface SGraphPackage extends EPackage {
 	 */
 	EClass getSynchronization();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.AbstractState <em>Abstract State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Abstract State</em>'.
+	 * @see org.yakindu.sct.model.sgraph.AbstractState
+	 * @generated
+	 */
+	EClass getAbstractState();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.SubmachineState <em>Submachine State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Submachine State</em>'.
+	 * @see org.yakindu.sct.model.sgraph.SubmachineState
+	 * @generated
+	 */
+	EClass getSubmachineState();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.yakindu.sct.model.sgraph.SubmachineState#getSubstatechart <em>Substatechart</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Substatechart</em>'.
+	 * @see org.yakindu.sct.model.sgraph.SubmachineState#getSubstatechart()
+	 * @see #getSubmachineState()
+	 * @generated
+	 */
+	EReference getSubmachineState_Substatechart();
+
 	/**
 	 * Returns the meta object for enum '{@link org.yakindu.sct.model.sgraph.EntryKind <em>Entry Kind</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1954,36 +2071,12 @@ public interface SGraphPackage extends EPackage {
 		EReference STATE__SUB_REGIONS = eINSTANCE.getState_SubRegions();
 
 		/**
-		 * The meta object literal for the '<em><b>Substatechart</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference STATE__SUBSTATECHART = eINSTANCE.getState_Substatechart();
-
-		/**
-		 * The meta object literal for the '<em><b>Submachine State</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute STATE__SUBMACHINE_STATE = eINSTANCE.getState_SubmachineState();
-
-		/**
-		 * The meta object literal for the '<em><b>Composite State</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute STATE__COMPOSITE_STATE = eINSTANCE.getState_CompositeState();
-
-		/**
-		 * The meta object literal for the '<em><b>Simple State</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Orthogonal</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute STATE__SIMPLE_STATE = eINSTANCE.getState_SimpleState();
+		EAttribute STATE__ORTHOGONAL = eINSTANCE.getState_Orthogonal();
 
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.VariableImpl <em>Variable</em>}' class.
@@ -2233,6 +2326,34 @@ public interface SGraphPackage extends EPackage {
 		 */
 		EClass SYNCHRONIZATION = eINSTANCE.getSynchronization();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl <em>Abstract State</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sgraph.impl.AbstractStateImpl
+		 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getAbstractState()
+		 * @generated
+		 */
+		EClass ABSTRACT_STATE = eINSTANCE.getAbstractState();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.SubmachineStateImpl <em>Submachine State</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sgraph.impl.SubmachineStateImpl
+		 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getSubmachineState()
+		 * @generated
+		 */
+		EClass SUBMACHINE_STATE = eINSTANCE.getSubmachineState();
+
+		/**
+		 * The meta object literal for the '<em><b>Substatechart</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SUBMACHINE_STATE__SUBSTATECHART = eINSTANCE.getSubmachineState_Substatechart();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.EntryKind <em>Entry Kind</em>}' enum.
 		 * <!-- begin-user-doc -->

+ 8 - 67
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/State.java

@@ -21,18 +21,15 @@ import org.eclipse.emf.common.util.EList;
  * The following features are supported:
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgraph.State#getSubRegions <em>Sub Regions</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgraph.State#getSubstatechart <em>Substatechart</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgraph.State#isSubmachineState <em>Submachine State</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgraph.State#isCompositeState <em>Composite State</em>}</li>
- *   <li>{@link org.yakindu.sct.model.sgraph.State#isSimpleState <em>Simple State</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.State#isOrthogonal <em>Orthogonal</em>}</li>
  * </ul>
  * </p>
  *
  * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState()
- * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NameIsNotEmpty'"
+ * @model
  * @generated
  */
-public interface State extends Vertex, ExpressionElement, ReactiveElement, ScopedElement {
+public interface State extends AbstractState {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -57,74 +54,18 @@ public interface State extends Vertex, ExpressionElement, ReactiveElement, Scope
 	EList<Region> getSubRegions();
 
 	/**
-	 * Returns the value of the '<em><b>Substatechart</b></em>' reference.
+	 * Returns the value of the '<em><b>Orthogonal</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Substatechart</em>' reference isn't clear,
+	 * If the meaning of the '<em>Orthogonal</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Substatechart</em>' reference.
-	 * @see #setSubstatechart(Statechart)
-	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState_Substatechart()
-	 * @model
-	 * @generated
-	 */
-	Statechart getSubstatechart();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.sct.model.sgraph.State#getSubstatechart <em>Substatechart</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Substatechart</em>' reference.
-	 * @see #getSubstatechart()
-	 * @generated
-	 */
-	void setSubstatechart(Statechart value);
-
-	/**
-	 * Returns the value of the '<em><b>Submachine State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Submachine State</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Submachine State</em>' attribute.
-	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState_SubmachineState()
-	 * @model transient="true" changeable="false" volatile="true" derived="true"
-	 * @generated
-	 */
-	boolean isSubmachineState();
-
-	/**
-	 * Returns the value of the '<em><b>Composite State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Composite State</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Composite State</em>' attribute.
-	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState_CompositeState()
+	 * @return the value of the '<em>Orthogonal</em>' attribute.
+	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState_Orthogonal()
 	 * @model transient="true" changeable="false" volatile="true" derived="true"
 	 * @generated
 	 */
-	boolean isCompositeState();
-
-	/**
-	 * Returns the value of the '<em><b>Simple State</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Simple State</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Simple State</em>' attribute.
-	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getState_SimpleState()
-	 * @model transient="true" changeable="false" volatile="true"
-	 * @generated
-	 */
-	boolean isSimpleState();
+	boolean isOrthogonal();
 
 } // State

+ 64 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SubmachineState.java

@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Submachine State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgraph.SubmachineState#getSubstatechart <em>Substatechart</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sgraph.SGraphPackage#getSubmachineState()
+ * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='SubStatechartExists'"
+ * @generated
+ */
+public interface SubmachineState extends AbstractState {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * Returns the value of the '<em><b>Substatechart</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Substatechart</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Substatechart</em>' reference.
+	 * @see #setSubstatechart(Statechart)
+	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getSubmachineState_Substatechart()
+	 * @model
+	 * @generated
+	 */
+	Statechart getSubstatechart();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sgraph.SubmachineState#getSubstatechart <em>Substatechart</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Substatechart</em>' reference.
+	 * @see #getSubstatechart()
+	 * @generated
+	 */
+	void setSubstatechart(Statechart value);
+
+} // SubmachineState

+ 357 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/AbstractStateImpl.java

@@ -0,0 +1,357 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.impl;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.yakindu.sct.model.sgraph.AbstractState;
+import org.yakindu.sct.model.sgraph.ExpressionElement;
+import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactiveElement;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+import org.yakindu.sct.model.sgraph.Scope;
+import org.yakindu.sct.model.sgraph.ScopedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl#getExpression <em>Expression</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl#getReactions <em>Reactions</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl#getLocalReactions <em>Local Reactions</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.AbstractStateImpl#getScopes <em>Scopes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractStateImpl extends VertexImpl implements AbstractState {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * The default value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXPRESSION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected String expression = EXPRESSION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getReactions() <em>Reactions</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReactions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Reaction> reactions;
+
+	/**
+	 * The cached value of the '{@link #getLocalReactions() <em>Local Reactions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLocalReactions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Reaction> localReactions;
+
+	/**
+	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScopes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Scope> scopes;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AbstractStateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SGraphPackage.Literals.ABSTRACT_STATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getExpression() {
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpression(String newExpression) {
+		String oldExpression = expression;
+		expression = newExpression;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGraphPackage.ABSTRACT_STATE__EXPRESSION, oldExpression, expression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Reaction> getReactions() {
+		if (reactions == null) {
+			reactions = new EObjectResolvingEList<Reaction>(Reaction.class, this, SGraphPackage.ABSTRACT_STATE__REACTIONS);
+		}
+		return reactions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Reaction> getLocalReactions() {
+		if (localReactions == null) {
+			localReactions = new EObjectContainmentEList<Reaction>(Reaction.class, this, SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS);
+		}
+		return localReactions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Scope> getScopes() {
+		if (scopes == null) {
+			scopes = new EObjectContainmentEList<Scope>(Scope.class, this, SGraphPackage.ABSTRACT_STATE__SCOPES);
+		}
+		return scopes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+				return ((InternalEList<?>)getLocalReactions()).basicRemove(otherEnd, msgs);
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				return ((InternalEList<?>)getScopes()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SGraphPackage.ABSTRACT_STATE__EXPRESSION:
+				return getExpression();
+			case SGraphPackage.ABSTRACT_STATE__REACTIONS:
+				return getReactions();
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+				return getLocalReactions();
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				return getScopes();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SGraphPackage.ABSTRACT_STATE__EXPRESSION:
+				setExpression((String)newValue);
+				return;
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+				getLocalReactions().clear();
+				getLocalReactions().addAll((Collection<? extends Reaction>)newValue);
+				return;
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				getScopes().clear();
+				getScopes().addAll((Collection<? extends Scope>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SGraphPackage.ABSTRACT_STATE__EXPRESSION:
+				setExpression(EXPRESSION_EDEFAULT);
+				return;
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+				getLocalReactions().clear();
+				return;
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				getScopes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SGraphPackage.ABSTRACT_STATE__EXPRESSION:
+				return EXPRESSION_EDEFAULT == null ? expression != null : !EXPRESSION_EDEFAULT.equals(expression);
+			case SGraphPackage.ABSTRACT_STATE__REACTIONS:
+				return reactions != null && !reactions.isEmpty();
+			case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS:
+				return localReactions != null && !localReactions.isEmpty();
+			case SGraphPackage.ABSTRACT_STATE__SCOPES:
+				return scopes != null && !scopes.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ExpressionElement.class) {
+			switch (derivedFeatureID) {
+				case SGraphPackage.ABSTRACT_STATE__EXPRESSION: return SGraphPackage.EXPRESSION_ELEMENT__EXPRESSION;
+				default: return -1;
+			}
+		}
+		if (baseClass == ReactiveElement.class) {
+			switch (derivedFeatureID) {
+				case SGraphPackage.ABSTRACT_STATE__REACTIONS: return SGraphPackage.REACTIVE_ELEMENT__REACTIONS;
+				case SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS: return SGraphPackage.REACTIVE_ELEMENT__LOCAL_REACTIONS;
+				default: return -1;
+			}
+		}
+		if (baseClass == ScopedElement.class) {
+			switch (derivedFeatureID) {
+				case SGraphPackage.ABSTRACT_STATE__SCOPES: return SGraphPackage.SCOPED_ELEMENT__SCOPES;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ExpressionElement.class) {
+			switch (baseFeatureID) {
+				case SGraphPackage.EXPRESSION_ELEMENT__EXPRESSION: return SGraphPackage.ABSTRACT_STATE__EXPRESSION;
+				default: return -1;
+			}
+		}
+		if (baseClass == ReactiveElement.class) {
+			switch (baseFeatureID) {
+				case SGraphPackage.REACTIVE_ELEMENT__REACTIONS: return SGraphPackage.ABSTRACT_STATE__REACTIONS;
+				case SGraphPackage.REACTIVE_ELEMENT__LOCAL_REACTIONS: return SGraphPackage.ABSTRACT_STATE__LOCAL_REACTIONS;
+				default: return -1;
+			}
+		}
+		if (baseClass == ScopedElement.class) {
+			switch (baseFeatureID) {
+				case SGraphPackage.SCOPED_ELEMENT__SCOPES: return SGraphPackage.ABSTRACT_STATE__SCOPES;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (expression: ");
+		result.append(expression);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AbstractStateImpl

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/FinalStateImpl.java

@@ -23,7 +23,7 @@ import org.yakindu.sct.model.sgraph.SGraphPackage;
  *
  * @generated
  */
-public class FinalStateImpl extends StateImpl implements FinalState {
+public class FinalStateImpl extends AbstractStateImpl implements FinalState {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 23 - 11
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java

@@ -28,6 +28,7 @@ import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.model.sgraph.SubmachineState;
 import org.yakindu.sct.model.sgraph.Synchronization;
 import org.yakindu.sct.model.sgraph.Transition;
 
@@ -85,7 +86,6 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 			case SGraphPackage.REGION: return createRegion();
 			case SGraphPackage.TRANSITION: return createTransition();
 			case SGraphPackage.FINAL_STATE: return createFinalState();
-			case SGraphPackage.STATE: return createState();
 			case SGraphPackage.JUNCTION: return createJunction();
 			case SGraphPackage.CHOICE: return createChoice();
 			case SGraphPackage.STATECHART: return createStatechart();
@@ -93,6 +93,8 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 			case SGraphPackage.EXIT: return createExit();
 			case SGraphPackage.SCOPE: return createScope();
 			case SGraphPackage.SYNCHRONIZATION: return createSynchronization();
+			case SGraphPackage.STATE: return createState();
+			case SGraphPackage.SUBMACHINE_STATE: return createSubmachineState();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -158,16 +160,6 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 		return finalState;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public State createState() {
-		StateImpl state = new StateImpl();
-		return state;
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -238,6 +230,26 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 		return synchronization;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public State createState() {
+		StateImpl state = new StateImpl();
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SubmachineState createSubmachineState() {
+		SubmachineStateImpl submachineState = new SubmachineStateImpl();
+		return submachineState;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 67 - 47
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java

@@ -211,6 +211,20 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	private EClass synchronizationEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass abstractStateEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass submachineStateEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -446,7 +460,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getState() {
 		if (stateEClass == null) {
-			stateEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(6);
+			stateEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(24);
 		}
 		return stateEClass;
 	}
@@ -465,35 +479,8 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getState_Substatechart() {
-        return (EReference)getState().getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getState_SubmachineState() {
-        return (EAttribute)getState().getEStructuralFeatures().get(2);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getState_CompositeState() {
-        return (EAttribute)getState().getEStructuralFeatures().get(3);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getState_SimpleState() {
-        return (EAttribute)getState().getEStructuralFeatures().get(4);
+	public EAttribute getState_Orthogonal() {
+        return (EAttribute)getState().getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -503,7 +490,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getVariable() {
 		if (variableEClass == null) {
-			variableEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(7);
+			variableEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(6);
 		}
 		return variableEClass;
 	}
@@ -515,7 +502,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getJunction() {
 		if (junctionEClass == null) {
-			junctionEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(8);
+			junctionEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(7);
 		}
 		return junctionEClass;
 	}
@@ -527,7 +514,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getEvent() {
 		if (eventEClass == null) {
-			eventEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(9);
+			eventEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(8);
 		}
 		return eventEClass;
 	}
@@ -539,7 +526,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getChoice() {
 		if (choiceEClass == null) {
-			choiceEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(10);
+			choiceEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(9);
 		}
 		return choiceEClass;
 	}
@@ -551,7 +538,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getStatechart() {
 		if (statechartEClass == null) {
-			statechartEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(11);
+			statechartEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(10);
 		}
 		return statechartEClass;
 	}
@@ -572,7 +559,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getEntry() {
 		if (entryEClass == null) {
-			entryEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(12);
+			entryEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(11);
 		}
 		return entryEClass;
 	}
@@ -593,7 +580,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getTrigger() {
 		if (triggerEClass == null) {
-			triggerEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(13);
+			triggerEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(12);
 		}
 		return triggerEClass;
 	}
@@ -605,7 +592,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getEffect() {
 		if (effectEClass == null) {
-			effectEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(14);
+			effectEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(13);
 		}
 		return effectEClass;
 	}
@@ -617,7 +604,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getExpressionElement() {
 		if (expressionElementEClass == null) {
-			expressionElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(15);
+			expressionElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(14);
 		}
 		return expressionElementEClass;
 	}
@@ -638,7 +625,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getDeclaration() {
 		if (declarationEClass == null) {
-			declarationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(16);
+			declarationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(15);
 		}
 		return declarationEClass;
 	}
@@ -650,7 +637,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getReaction() {
 		if (reactionEClass == null) {
-			reactionEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(17);
+			reactionEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(16);
 		}
 		return reactionEClass;
 	}
@@ -680,7 +667,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getReactiveElement() {
 		if (reactiveElementEClass == null) {
-			reactiveElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(19);
+			reactiveElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(18);
 		}
 		return reactiveElementEClass;
 	}
@@ -710,7 +697,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getExit() {
 		if (exitEClass == null) {
-			exitEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(20);
+			exitEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(19);
 		}
 		return exitEClass;
 	}
@@ -722,7 +709,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getScope() {
 		if (scopeEClass == null) {
-			scopeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(21);
+			scopeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(20);
 		}
 		return scopeEClass;
 	}
@@ -761,7 +748,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getScopedElement() {
 		if (scopedElementEClass == null) {
-			scopedElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(22);
+			scopedElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(21);
 		}
 		return scopedElementEClass;
 	}
@@ -782,11 +769,44 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EClass getSynchronization() {
 		if (synchronizationEClass == null) {
-			synchronizationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(23);
+			synchronizationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(22);
 		}
 		return synchronizationEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAbstractState() {
+		if (abstractStateEClass == null) {
+			abstractStateEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(23);
+		}
+		return abstractStateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSubmachineState() {
+		if (submachineStateEClass == null) {
+			submachineStateEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(25);
+		}
+		return submachineStateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSubmachineState_Substatechart() {
+        return (EReference)getSubmachineState().getEStructuralFeatures().get(0);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -794,7 +814,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	public EEnum getEntryKind() {
 		if (entryKindEEnum == null) {
-			entryKindEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(18);
+			entryKindEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI).getEClassifiers().get(17);
 		}
 		return entryKindEEnum;
 	}

+ 12 - 392
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StateImpl.java

@@ -12,24 +12,15 @@ package org.yakindu.sct.model.sgraph.impl;
 
 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.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-import org.yakindu.sct.model.sgraph.ExpressionElement;
-import org.yakindu.sct.model.sgraph.Reaction;
-import org.yakindu.sct.model.sgraph.ReactiveElement;
 import org.yakindu.sct.model.sgraph.Region;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
-import org.yakindu.sct.model.sgraph.Scope;
-import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.State;
-import org.yakindu.sct.model.sgraph.Statechart;
 
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
@@ -37,30 +28,16 @@ import org.yakindu.sct.model.sgraph.Statechart;
  * <p>
  * The following features are implemented:
  * <ul>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getExpression <em>
- * Expression</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getReactions <em>
- * Reactions</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getLocalReactions <em>
- * Local Reactions</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getScopes <em>Scopes
- * </em>}</li>
  * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getSubRegions <em>Sub
  * Regions</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#getSubstatechart <em>
- * Substatechart</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#isSubmachineState <em>
- * Submachine State</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#isCompositeState <em>
- * Composite State</em>}</li>
- * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#isSimpleState <em>
- * Simple State</em>}</li>
+ * <li>{@link org.yakindu.sct.model.sgraph.impl.StateImpl#isOrthogonal <em>
+ * Orthogonal</em>}</li>
  * </ul>
  * </p>
  * 
  * @generated
  */
-public class StateImpl extends VertexImpl implements State {
+public class StateImpl extends AbstractStateImpl implements State {
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
@@ -68,57 +45,6 @@ public class StateImpl extends VertexImpl implements State {
 	 */
 	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
 
-	/**
-	 * The default value of the '{@link #getExpression() <em>Expression</em>}'
-	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @see #getExpression()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String EXPRESSION_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getExpression() <em>Expression</em>}'
-	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @see #getExpression()
-	 * @generated
-	 * @ordered
-	 */
-	protected String expression = EXPRESSION_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getReactions() <em>Reactions</em>}'
-	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @see #getReactions()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<Reaction> reactions;
-
-	/**
-	 * The cached value of the '{@link #getLocalReactions()
-	 * <em>Local Reactions</em>}' containment reference list. <!--
-	 * begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @see #getLocalReactions()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<Reaction> localReactions;
-
-	/**
-	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}'
-	 * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @see #getScopes()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<Scope> scopes;
-
 	/**
 	 * The cached value of the '{@link #getSubRegions() <em>Sub Regions</em>}'
 	 * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -130,47 +56,14 @@ public class StateImpl extends VertexImpl implements State {
 	protected EList<Region> subRegions;
 
 	/**
-	 * The cached value of the '{@link #getSubstatechart()
-	 * <em>Substatechart</em>}' reference. <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
-	 * 
-	 * @see #getSubstatechart()
-	 * @generated
-	 * @ordered
-	 */
-	protected Statechart substatechart;
-
-	/**
-	 * The default value of the '{@link #isSubmachineState()
-	 * <em>Submachine State</em>}' attribute. <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
-	 * 
-	 * @see #isSubmachineState()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final boolean SUBMACHINE_STATE_EDEFAULT = false;
-
-	/**
-	 * The default value of the '{@link #isCompositeState()
-	 * <em>Composite State</em>}' attribute. <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
-	 * 
-	 * @see #isCompositeState()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final boolean COMPOSITE_STATE_EDEFAULT = false;
-
-	/**
-	 * The default value of the '{@link #isSimpleState() <em>Simple State</em>}'
+	 * The default value of the '{@link #isOrthogonal() <em>Orthogonal</em>}'
 	 * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
-	 * @see #isSimpleState()
+	 * @see #isOrthogonal()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final boolean SIMPLE_STATE_EDEFAULT = false;
+	protected static final boolean ORTHOGONAL_EDEFAULT = false;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -191,67 +84,6 @@ public class StateImpl extends VertexImpl implements State {
 		return SGraphPackage.Literals.STATE;
 	}
 
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public String getExpression() {
-		return expression;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public void setExpression(String newExpression) {
-		String oldExpression = expression;
-		expression = newExpression;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-					SGraphPackage.STATE__EXPRESSION, oldExpression, expression));
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public EList<Reaction> getReactions() {
-		if (reactions == null) {
-			reactions = new EObjectResolvingEList<Reaction>(Reaction.class,
-					this, SGraphPackage.STATE__REACTIONS);
-		}
-		return reactions;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public EList<Reaction> getLocalReactions() {
-		if (localReactions == null) {
-			localReactions = new EObjectContainmentEList<Reaction>(
-					Reaction.class, this, SGraphPackage.STATE__LOCAL_REACTIONS);
-		}
-		return localReactions;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public EList<Scope> getScopes() {
-		if (scopes == null) {
-			scopes = new EObjectContainmentEList<Scope>(Scope.class, this,
-					SGraphPackage.STATE__SCOPES);
-		}
-		return scopes;
-	}
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
@@ -265,73 +97,13 @@ public class StateImpl extends VertexImpl implements State {
 		return subRegions;
 	}
 
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public Statechart getSubstatechart() {
-		if (substatechart != null && substatechart.eIsProxy()) {
-			InternalEObject oldSubstatechart = (InternalEObject) substatechart;
-			substatechart = (Statechart) eResolveProxy(oldSubstatechart);
-			if (substatechart != oldSubstatechart) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
-							SGraphPackage.STATE__SUBSTATECHART,
-							oldSubstatechart, substatechart));
-			}
-		}
-		return substatechart;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public Statechart basicGetSubstatechart() {
-		return substatechart;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public void setSubstatechart(Statechart newSubstatechart) {
-		Statechart oldSubstatechart = substatechart;
-		substatechart = newSubstatechart;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-					SGraphPackage.STATE__SUBSTATECHART, oldSubstatechart,
-					substatechart));
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated NOT
-	 */
-	public boolean isSubmachineState() {
-		return getSubstatechart() != null;
-	}
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
 	 * @generated NOT
 	 */
-	public boolean isCompositeState() {
-		return getSubRegions() != null && getSubRegions().size() > 0;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	public boolean isSimpleState() {
-		return getSubRegions() == null || getSubRegions().size() == 0;
+	public boolean isOrthogonal() {
+		return getSubRegions().size() > 1;
 	}
 
 	/**
@@ -343,11 +115,6 @@ public class StateImpl extends VertexImpl implements State {
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
-		case SGraphPackage.STATE__LOCAL_REACTIONS:
-			return ((InternalEList<?>) getLocalReactions()).basicRemove(
-					otherEnd, msgs);
-		case SGraphPackage.STATE__SCOPES:
-			return ((InternalEList<?>) getScopes()).basicRemove(otherEnd, msgs);
 		case SGraphPackage.STATE__SUB_REGIONS:
 			return ((InternalEList<?>) getSubRegions()).basicRemove(otherEnd,
 					msgs);
@@ -363,26 +130,10 @@ public class StateImpl extends VertexImpl implements State {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case SGraphPackage.STATE__EXPRESSION:
-			return getExpression();
-		case SGraphPackage.STATE__REACTIONS:
-			return getReactions();
-		case SGraphPackage.STATE__LOCAL_REACTIONS:
-			return getLocalReactions();
-		case SGraphPackage.STATE__SCOPES:
-			return getScopes();
 		case SGraphPackage.STATE__SUB_REGIONS:
 			return getSubRegions();
-		case SGraphPackage.STATE__SUBSTATECHART:
-			if (resolve)
-				return getSubstatechart();
-			return basicGetSubstatechart();
-		case SGraphPackage.STATE__SUBMACHINE_STATE:
-			return isSubmachineState();
-		case SGraphPackage.STATE__COMPOSITE_STATE:
-			return isCompositeState();
-		case SGraphPackage.STATE__SIMPLE_STATE:
-			return isSimpleState();
+		case SGraphPackage.STATE__ORTHOGONAL:
+			return isOrthogonal();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -396,25 +147,10 @@ public class StateImpl extends VertexImpl implements State {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case SGraphPackage.STATE__EXPRESSION:
-			setExpression((String) newValue);
-			return;
-		case SGraphPackage.STATE__LOCAL_REACTIONS:
-			getLocalReactions().clear();
-			getLocalReactions().addAll(
-					(Collection<? extends Reaction>) newValue);
-			return;
-		case SGraphPackage.STATE__SCOPES:
-			getScopes().clear();
-			getScopes().addAll((Collection<? extends Scope>) newValue);
-			return;
 		case SGraphPackage.STATE__SUB_REGIONS:
 			getSubRegions().clear();
 			getSubRegions().addAll((Collection<? extends Region>) newValue);
 			return;
-		case SGraphPackage.STATE__SUBSTATECHART:
-			setSubstatechart((Statechart) newValue);
-			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -427,21 +163,9 @@ public class StateImpl extends VertexImpl implements State {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case SGraphPackage.STATE__EXPRESSION:
-			setExpression(EXPRESSION_EDEFAULT);
-			return;
-		case SGraphPackage.STATE__LOCAL_REACTIONS:
-			getLocalReactions().clear();
-			return;
-		case SGraphPackage.STATE__SCOPES:
-			getScopes().clear();
-			return;
 		case SGraphPackage.STATE__SUB_REGIONS:
 			getSubRegions().clear();
 			return;
-		case SGraphPackage.STATE__SUBSTATECHART:
-			setSubstatechart((Statechart) null);
-			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -454,116 +178,12 @@ public class StateImpl extends VertexImpl implements State {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case SGraphPackage.STATE__EXPRESSION:
-			return EXPRESSION_EDEFAULT == null ? expression != null
-					: !EXPRESSION_EDEFAULT.equals(expression);
-		case SGraphPackage.STATE__REACTIONS:
-			return reactions != null && !reactions.isEmpty();
-		case SGraphPackage.STATE__LOCAL_REACTIONS:
-			return localReactions != null && !localReactions.isEmpty();
-		case SGraphPackage.STATE__SCOPES:
-			return scopes != null && !scopes.isEmpty();
 		case SGraphPackage.STATE__SUB_REGIONS:
 			return subRegions != null && !subRegions.isEmpty();
-		case SGraphPackage.STATE__SUBSTATECHART:
-			return substatechart != null;
-		case SGraphPackage.STATE__SUBMACHINE_STATE:
-			return isSubmachineState() != SUBMACHINE_STATE_EDEFAULT;
-		case SGraphPackage.STATE__COMPOSITE_STATE:
-			return isCompositeState() != COMPOSITE_STATE_EDEFAULT;
-		case SGraphPackage.STATE__SIMPLE_STATE:
-			return isSimpleState() != SIMPLE_STATE_EDEFAULT;
+		case SGraphPackage.STATE__ORTHOGONAL:
+			return isOrthogonal() != ORTHOGONAL_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}
 
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
-		if (baseClass == ExpressionElement.class) {
-			switch (derivedFeatureID) {
-			case SGraphPackage.STATE__EXPRESSION:
-				return SGraphPackage.EXPRESSION_ELEMENT__EXPRESSION;
-			default:
-				return -1;
-			}
-		}
-		if (baseClass == ReactiveElement.class) {
-			switch (derivedFeatureID) {
-			case SGraphPackage.STATE__REACTIONS:
-				return SGraphPackage.REACTIVE_ELEMENT__REACTIONS;
-			case SGraphPackage.STATE__LOCAL_REACTIONS:
-				return SGraphPackage.REACTIVE_ELEMENT__LOCAL_REACTIONS;
-			default:
-				return -1;
-			}
-		}
-		if (baseClass == ScopedElement.class) {
-			switch (derivedFeatureID) {
-			case SGraphPackage.STATE__SCOPES:
-				return SGraphPackage.SCOPED_ELEMENT__SCOPES;
-			default:
-				return -1;
-			}
-		}
-		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
-		if (baseClass == ExpressionElement.class) {
-			switch (baseFeatureID) {
-			case SGraphPackage.EXPRESSION_ELEMENT__EXPRESSION:
-				return SGraphPackage.STATE__EXPRESSION;
-			default:
-				return -1;
-			}
-		}
-		if (baseClass == ReactiveElement.class) {
-			switch (baseFeatureID) {
-			case SGraphPackage.REACTIVE_ELEMENT__REACTIONS:
-				return SGraphPackage.STATE__REACTIONS;
-			case SGraphPackage.REACTIVE_ELEMENT__LOCAL_REACTIONS:
-				return SGraphPackage.STATE__LOCAL_REACTIONS;
-			default:
-				return -1;
-			}
-		}
-		if (baseClass == ScopedElement.class) {
-			switch (baseFeatureID) {
-			case SGraphPackage.SCOPED_ELEMENT__SCOPES:
-				return SGraphPackage.STATE__SCOPES;
-			default:
-				return -1;
-			}
-		}
-		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy())
-			return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (expression: ");
-		result.append(expression);
-		result.append(')');
-		return result.toString();
-	}
-
 } // StateImpl

+ 168 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SubmachineStateImpl.java

@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.model.sgraph.SubmachineState;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Submachine State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.SubmachineStateImpl#getSubstatechart <em>Substatechart</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SubmachineStateImpl extends AbstractStateImpl implements SubmachineState {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * The cached value of the '{@link #getSubstatechart() <em>Substatechart</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubstatechart()
+	 * @generated
+	 * @ordered
+	 */
+	protected Statechart substatechart;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SubmachineStateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SGraphPackage.Literals.SUBMACHINE_STATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Statechart getSubstatechart() {
+		if (substatechart != null && substatechart.eIsProxy()) {
+			InternalEObject oldSubstatechart = (InternalEObject)substatechart;
+			substatechart = (Statechart)eResolveProxy(oldSubstatechart);
+			if (substatechart != oldSubstatechart) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART, oldSubstatechart, substatechart));
+			}
+		}
+		return substatechart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Statechart basicGetSubstatechart() {
+		return substatechart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSubstatechart(Statechart newSubstatechart) {
+		Statechart oldSubstatechart = substatechart;
+		substatechart = newSubstatechart;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART, oldSubstatechart, substatechart));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART:
+				if (resolve) return getSubstatechart();
+				return basicGetSubstatechart();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART:
+				setSubstatechart((Statechart)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART:
+				setSubstatechart((Statechart)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SGraphPackage.SUBMACHINE_STATE__SUBSTATECHART:
+				return substatechart != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SubmachineStateImpl

+ 19 - 16
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/sgraph.ecore

@@ -34,22 +34,7 @@
         lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>
-  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Vertex #//ExpressionElement #//ReactiveElement #//ScopedElement">
-    <eAnnotations source="InjectMembers"/>
-    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
-      <details key="constraints" value="NameIsNotEmpty"/>
-    </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="subRegions" ordered="false"
-        upperBound="-1" eType="#//Region" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="submachineState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="compositeState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="simpleState" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//AbstractState"/>
   <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//Declaration"/>
   <eClassifiers xsi:type="ecore:EClass" name="Junction" eSuperTypes="#//Pseudostate"/>
   <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//Declaration"/>
@@ -100,4 +85,22 @@
         eType="#//Scope" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="#//Pseudostate"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractState" abstract="true" eSuperTypes="#//Vertex #//ExpressionElement #//ReactiveElement #//ScopedElement">
+    <eAnnotations source="InjectMembers"/>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="constraints" value="NameIsNotEmpty"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//AbstractState">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subRegions" ordered="false"
+        upperBound="-1" eType="#//Region" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="orthogonal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SubmachineState" eSuperTypes="#//AbstractState">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+      <details key="constraints" value="SubStatechartExists"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 42 - 4
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java

@@ -14,6 +14,7 @@ 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.sct.model.sgraph.AbstractState;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
@@ -33,6 +34,7 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.model.sgraph.SubmachineState;
 import org.yakindu.sct.model.sgraph.Synchronization;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
@@ -127,10 +129,6 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 				return createFinalStateAdapter();
 			}
 			@Override
-			public Adapter caseState(State object) {
-				return createStateAdapter();
-			}
-			@Override
 			public Adapter caseVariable(Variable object) {
 				return createVariableAdapter();
 			}
@@ -195,6 +193,18 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 				return createSynchronizationAdapter();
 			}
 			@Override
+			public Adapter caseAbstractState(AbstractState object) {
+				return createAbstractStateAdapter();
+			}
+			@Override
+			public Adapter caseState(State object) {
+				return createStateAdapter();
+			}
+			@Override
+			public Adapter caseSubmachineState(SubmachineState object) {
+				return createSubmachineStateAdapter();
+			}
+			@Override
 			public Adapter defaultCase(EObject object) {
 				return createEObjectAdapter();
 			}
@@ -536,6 +546,34 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.AbstractState <em>Abstract State</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.sct.model.sgraph.AbstractState
+	 * @generated
+	 */
+	public Adapter createAbstractStateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.SubmachineState <em>Submachine State</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.sct.model.sgraph.SubmachineState
+	 * @generated
+	 */
+	public Adapter createSubmachineStateAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->

+ 68 - 12
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java

@@ -13,6 +13,7 @@ package org.yakindu.sct.model.sgraph.util;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
+import org.yakindu.sct.model.sgraph.AbstractState;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
@@ -32,6 +33,7 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.model.sgraph.SubmachineState;
 import org.yakindu.sct.model.sgraph.Synchronization;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
@@ -141,7 +143,7 @@ public class SGraphSwitch<T> extends Switch<T> {
 			case SGraphPackage.FINAL_STATE: {
 				FinalState finalState = (FinalState)theEObject;
 				T result = caseFinalState(finalState);
-				if (result == null) result = caseState(finalState);
+				if (result == null) result = caseAbstractState(finalState);
 				if (result == null) result = caseVertex(finalState);
 				if (result == null) result = caseExpressionElement(finalState);
 				if (result == null) result = caseReactiveElement(finalState);
@@ -150,17 +152,6 @@ public class SGraphSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SGraphPackage.STATE: {
-				State state = (State)theEObject;
-				T result = caseState(state);
-				if (result == null) result = caseVertex(state);
-				if (result == null) result = caseExpressionElement(state);
-				if (result == null) result = caseReactiveElement(state);
-				if (result == null) result = caseScopedElement(state);
-				if (result == null) result = caseNamedElement(state);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case SGraphPackage.VARIABLE: {
 				Variable variable = (Variable)theEObject;
 				T result = caseVariable(variable);
@@ -281,6 +272,41 @@ public class SGraphSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SGraphPackage.ABSTRACT_STATE: {
+				AbstractState abstractState = (AbstractState)theEObject;
+				T result = caseAbstractState(abstractState);
+				if (result == null) result = caseVertex(abstractState);
+				if (result == null) result = caseExpressionElement(abstractState);
+				if (result == null) result = caseReactiveElement(abstractState);
+				if (result == null) result = caseScopedElement(abstractState);
+				if (result == null) result = caseNamedElement(abstractState);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SGraphPackage.STATE: {
+				State state = (State)theEObject;
+				T result = caseState(state);
+				if (result == null) result = caseAbstractState(state);
+				if (result == null) result = caseVertex(state);
+				if (result == null) result = caseExpressionElement(state);
+				if (result == null) result = caseReactiveElement(state);
+				if (result == null) result = caseScopedElement(state);
+				if (result == null) result = caseNamedElement(state);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SGraphPackage.SUBMACHINE_STATE: {
+				SubmachineState submachineState = (SubmachineState)theEObject;
+				T result = caseSubmachineState(submachineState);
+				if (result == null) result = caseAbstractState(submachineState);
+				if (result == null) result = caseVertex(submachineState);
+				if (result == null) result = caseExpressionElement(submachineState);
+				if (result == null) result = caseReactiveElement(submachineState);
+				if (result == null) result = caseScopedElement(submachineState);
+				if (result == null) result = caseNamedElement(submachineState);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -630,6 +656,36 @@ public class SGraphSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Abstract State</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>Abstract State</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAbstractState(AbstractState object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Submachine State</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>Submachine State</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSubmachineState(SubmachineState object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->

+ 152 - 70
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphValidator.java

@@ -18,6 +18,7 @@ import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.yakindu.sct.model.sgraph.AbstractState;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
@@ -38,6 +39,7 @@ import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.model.sgraph.SubmachineState;
 import org.yakindu.sct.model.sgraph.Synchronization;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
@@ -60,9 +62,8 @@ public class SGraphValidator extends EObjectValidator {
 	public static final String ISSUE_INITIAL_ENTRY_WITH_IN_TRANS = "Initial entry should have no incoming transition.";
 	public static final String ISSUE_INITIAL_ENTRY_WITHOUT_OUT_TRANS = "Initial entry should have a single outgoing transition";
 	public final static String ISSUE_ENTRY_WITH_MULTIPLE_OUT_TRANS = "Entries must not have more than one outgoing transition";
-	public static final String ISSUE_OUTGOING_TRANSITION_WITHOUT_TARGET = "!! Vertex contains outgoing transitions without target !!";
+	public static final String ISSUE_SUBMACHINESTATE_WITHOUT_SUBMACHINE = "Selected Submachine can not be resolved!";
 
-	
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -101,9 +102,6 @@ public class SGraphValidator extends EObjectValidator {
 	 */
 	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
 
-	
-	
-	
 	/**
 	 * Creates an instance of the switch.
 	 * <!-- begin-user-doc --> <!--
@@ -146,8 +144,6 @@ public class SGraphValidator extends EObjectValidator {
 				return validateTransition((Transition)value, diagnostics, context);
 			case SGraphPackage.FINAL_STATE:
 				return validateFinalState((FinalState)value, diagnostics, context);
-			case SGraphPackage.STATE:
-				return validateState((State)value, diagnostics, context);
 			case SGraphPackage.VARIABLE:
 				return validateVariable((Variable)value, diagnostics, context);
 			case SGraphPackage.JUNCTION:
@@ -180,6 +176,12 @@ public class SGraphValidator extends EObjectValidator {
 				return validateScopedElement((ScopedElement)value, diagnostics, context);
 			case SGraphPackage.SYNCHRONIZATION:
 				return validateSynchronization((Synchronization)value, diagnostics, context);
+			case SGraphPackage.ABSTRACT_STATE:
+				return validateAbstractState((AbstractState)value, diagnostics, context);
+			case SGraphPackage.STATE:
+				return validateState((State)value, diagnostics, context);
+			case SGraphPackage.SUBMACHINE_STATE:
+				return validateSubmachineState((SubmachineState)value, diagnostics, context);
 			case SGraphPackage.ENTRY_KIND:
 				return validateEntryKind((EntryKind)value, diagnostics, context);
 			default:
@@ -235,15 +237,18 @@ public class SGraphValidator extends EObjectValidator {
 	 */
 	public boolean validateVertex_IncomingTransitionCount(Vertex vertex,
 			DiagnosticChain diagnostics, Map<Object, Object> context) {
-		
-		if (vertex.getIncomingTransitions().size() == 0 && !(vertex instanceof Entry)) {
+
+		if (vertex.getIncomingTransitions().size() == 0
+				&& !(vertex instanceof Entry)) {
 			return error(vertex, diagnostics, ISSUE_NODE_NOT_REACHABLE);
 		}
 
-		if (vertex.getIncomingTransitions().size() > 0 && vertex instanceof Entry && ((Entry)vertex).getKind().equals(EntryKind.INITIAL)) {
-			return warning(vertex, diagnostics, ISSUE_INITIAL_ENTRY_WITH_IN_TRANS);
+		if (vertex.getIncomingTransitions().size() > 0
+				&& vertex instanceof Entry
+				&& ((Entry) vertex).getKind().equals(EntryKind.INITIAL)) {
+			return warning(vertex, diagnostics,
+					ISSUE_INITIAL_ENTRY_WITH_IN_TRANS);
 		}
-		
 
 		return true;
 	}
@@ -257,29 +262,28 @@ public class SGraphValidator extends EObjectValidator {
 	public boolean validateVertex_OutgoingTransitionCount(Vertex vertex,
 			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-		
-		for (Transition tran : vertex.getOutgoingTransitions()) {
-			if (tran.getTarget() == null) warning(vertex, diagnostics, ISSUE_OUTGOING_TRANSITION_WITHOUT_TARGET);
-		}
-		
-		if ((vertex.getOutgoingTransitions().size() > 0) && (vertex instanceof FinalState)) {
-			return warning(vertex, diagnostics, ISSUE_FINAL_STATE_OUTGOING_TRANSITION);
+		if ((vertex.getOutgoingTransitions().size() > 0)
+				&& (vertex instanceof FinalState)) {
+			return warning(vertex, diagnostics,
+					ISSUE_FINAL_STATE_OUTGOING_TRANSITION);
 		}
-		
-		if (vertex.getOutgoingTransitions().size() == 0 && vertex instanceof Entry && ((Entry)vertex).getKind().equals(EntryKind.INITIAL)) {
-			return warning(vertex, diagnostics, ISSUE_INITIAL_ENTRY_WITHOUT_OUT_TRANS);
-		} 
 
-		if (vertex.getOutgoingTransitions().size() > 1 && vertex instanceof Entry) {
-			return error(vertex, diagnostics, ISSUE_ENTRY_WITH_MULTIPLE_OUT_TRANS);
-		} 
+		if (vertex.getOutgoingTransitions().size() == 0
+				&& vertex instanceof Entry
+				&& ((Entry) vertex).getKind().equals(EntryKind.INITIAL)) {
+			return warning(vertex, diagnostics,
+					ISSUE_INITIAL_ENTRY_WITHOUT_OUT_TRANS);
+		}
 
+		if (vertex.getOutgoingTransitions().size() > 1
+				&& vertex instanceof Entry) {
+			return error(vertex, diagnostics,
+					ISSUE_ENTRY_WITH_MULTIPLE_OUT_TRANS);
+		}
 
 		return true;
 	}
 
-
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -317,22 +321,22 @@ public class SGraphValidator extends EObjectValidator {
 	public boolean validateRegion_ExactlyOneInitialState(Region region,
 			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-//		int entryCount = 0;
-//		EList<Vertex> vertices = region.getVertices();
-//		for (Vertex vertex : vertices) {
-//			if (vertex instanceof Entry) {
-//				entryCount++;
-//			}
-//		}
-//		if (entryCount != 1) {
-//			if (diagnostics != null) {
-//				diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
-//						DIAGNOSTIC_SOURCE, 0,
-//						"A region must contain exactly one initial state!",
-//						new Object[] { region }));
-//			}
-//			return false;
-//		}
+		// int entryCount = 0;
+		// EList<Vertex> vertices = region.getVertices();
+		// for (Vertex vertex : vertices) {
+		// if (vertex instanceof Entry) {
+		// entryCount++;
+		// }
+		// }
+		// if (entryCount != 1) {
+		// if (diagnostics != null) {
+		// diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
+		// DIAGNOSTIC_SOURCE, 0,
+		// "A region must contain exactly one initial state!",
+		// new Object[] { region }));
+		// }
+		// return false;
+		// }
 		return true;
 	}
 
@@ -362,7 +366,7 @@ public class SGraphValidator extends EObjectValidator {
 		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(finalState, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVertex_IncomingTransitionCount(finalState, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVertex_OutgoingTransitionCount(finalState, diagnostics, context);
-		if (result || diagnostics != null) result &= validateState_NameIsNotEmpty(finalState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateAbstractState_NameIsNotEmpty(finalState, diagnostics, context);
 		return result;
 	}
 
@@ -383,7 +387,7 @@ public class SGraphValidator extends EObjectValidator {
 		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(state, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVertex_IncomingTransitionCount(state, diagnostics, context);
 		if (result || diagnostics != null) result &= validateVertex_OutgoingTransitionCount(state, diagnostics, context);
-		if (result || diagnostics != null) result &= validateState_NameIsNotEmpty(state, diagnostics, context);
+		if (result || diagnostics != null) result &= validateAbstractState_NameIsNotEmpty(state, diagnostics, context);
 		return result;
 	}
 
@@ -395,7 +399,7 @@ public class SGraphValidator extends EObjectValidator {
 	 */
 	public boolean validateState_NameIsNotEmpty(State state,
 			DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if ( (state.getName() == null || state.getName().trim().length() == 0) 
+		if ((state.getName() == null || state.getName().trim().length() == 0)
 				&& !(state instanceof FinalState)) {
 			return error(state, diagnostics, ISSUE_STATE_WITHOUT_NAME);
 		}
@@ -583,11 +587,11 @@ public class SGraphValidator extends EObjectValidator {
 	}
 
 	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSynchronization(Synchronization synchronization, DiagnosticChain diagnostics, Map<Object, Object> context) {
+	public boolean validateSynchronization(Synchronization synchronization,
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		if (!validate_NoCircularContainment(synchronization, diagnostics, context)) return false;
 		boolean result = validate_EveryMultiplicityConforms(synchronization, diagnostics, context);
 		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(synchronization, diagnostics, context);
@@ -602,6 +606,95 @@ public class SGraphValidator extends EObjectValidator {
 		return result;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateAbstractState(AbstractState abstractState, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		if (!validate_NoCircularContainment(abstractState, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVertex_IncomingTransitionCount(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVertex_OutgoingTransitionCount(abstractState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateAbstractState_NameIsNotEmpty(abstractState, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * Validates the NameIsNotEmpty constraint of '<em>Abstract State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateAbstractState_NameIsNotEmpty(AbstractState abstractState, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		// TODO implement the constraint
+		// -> specify the condition that violates the constraint
+		// -> verify the diagnostic details, including severity, code, and message
+		// Ensure that you remove @generated or mark it @generated NOT
+		if (false) {
+			if (diagnostics != null) {
+				diagnostics.add
+					(createDiagnostic
+						(Diagnostic.ERROR,
+						 DIAGNOSTIC_SOURCE,
+						 0,
+						 "_UI_GenericConstraint_diagnostic",
+						 new Object[] { "NameIsNotEmpty", getObjectLabel(abstractState, context) },
+						 new Object[] { abstractState },
+						 context));
+			}
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateSubmachineState(SubmachineState submachineState,
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
+		if (!validate_NoCircularContainment(submachineState, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVertex_IncomingTransitionCount(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateVertex_OutgoingTransitionCount(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateAbstractState_NameIsNotEmpty(submachineState, diagnostics, context);
+		if (result || diagnostics != null) result &= validateSubmachineState_SubStatechartExists(submachineState, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * Validates the SubStatechartExists constraint of '
+	 * <em>Submachine State</em>'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public boolean validateSubmachineState_SubStatechartExists(
+			SubmachineState submachineState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
+		if ((submachineState.getSubstatechart() == null || submachineState
+				.getSubstatechart().eIsProxy())) {
+			return error(submachineState, diagnostics,
+					ISSUE_SUBMACHINESTATE_WITHOUT_SUBMACHINE);
+		}
+		return true;
+
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -623,34 +716,23 @@ public class SGraphValidator extends EObjectValidator {
 		// Ensure that you remove @generated or mark it @generated NOT
 		return super.getResourceLocator();
 	}
-	
-	
-	protected boolean warning(Vertex vertex, DiagnosticChain diagnostics, String messagen) {
+
+	protected boolean warning(Vertex vertex, DiagnosticChain diagnostics,
+			String messagen) {
 		if (diagnostics != null) {
-			diagnostics
-					.add(new BasicDiagnostic(
-							Diagnostic.WARNING,
-							DIAGNOSTIC_SOURCE,
-							0,
-							messagen,
-							new Object[] { vertex }));
+			diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
+					DIAGNOSTIC_SOURCE, 0, messagen, new Object[] { vertex }));
 		}
 		return false;
 	}
 
-	
-	protected boolean error(Vertex vertex, DiagnosticChain diagnostics, String messagen) {
+	protected boolean error(Vertex vertex, DiagnosticChain diagnostics,
+			String messagen) {
 		if (diagnostics != null) {
-			diagnostics
-					.add(new BasicDiagnostic(
-							Diagnostic.ERROR,
-							DIAGNOSTIC_SOURCE,
-							0,
-							messagen,
-							new Object[] { vertex }));
+			diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR,
+					DIAGNOSTIC_SOURCE, 0, messagen, new Object[] { vertex }));
 		}
 		return false;
 	}
 
-
 } // StatechartValidator

+ 1 - 1
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/AbstractSTextUiModule.java

@@ -4,8 +4,8 @@
  */
 package org.yakindu.sct.model.stext.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.DefaultUiModule;
 
 /**
  * Manual modifications go to {org.yakindu.sct.model.stext.ui.STextUiModule}

+ 4 - 2
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java

@@ -4,10 +4,12 @@
 package org.yakindu.sct.model.stext.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.*;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
-import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
 import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
 
 /**
  * Represents a generated, default implementation of interface {@link IProposalProvider}.

+ 2 - 3
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java

@@ -4,19 +4,18 @@
 package org.yakindu.sct.model.stext.ui.contentassist.antlr;
 
 import java.util.Collection;
-import java.util.Map;
 import java.util.HashMap;
+import java.util.Map;
 
 import org.antlr.runtime.RecognitionException;
 import org.eclipse.xtext.AbstractElement;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.yakindu.sct.model.stext.services.STextGrammarAccess;
 
 import com.google.inject.Inject;
 
-import org.yakindu.sct.model.stext.services.STextGrammarAccess;
-
 public class STextParser extends AbstractContentAssistParser {
 	
 	@Inject

+ 9 - 6
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java

@@ -2,14 +2,17 @@ package org.yakindu.sct.model.stext.ui.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
 // Currently there is no other way to specify the superclass for the lexer.
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
 
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
 @SuppressWarnings("all")
 public class InternalSTextLexer extends Lexer {
     public static final int T__42=42;

+ 9 - 18
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java

@@ -1,26 +1,17 @@
 package org.yakindu.sct.model.stext.ui.contentassist.antlr.internal; 
 
-import java.io.InputStream;
-import org.eclipse.xtext.*;
-import org.eclipse.xtext.parser.*;
-import org.eclipse.xtext.parser.impl.*;
-import org.eclipse.xtext.parsetree.*;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.FailedPredicateException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.TokenStream;
+import org.eclipse.xtext.Grammar;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
 import org.yakindu.sct.model.stext.services.STextGrammarAccess;
-
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
 @SuppressWarnings("all")
 public class InternalSTextParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {

+ 4 - 5
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/internal/STextActivator.java

@@ -3,20 +3,19 @@
  */
 package org.yakindu.sct.model.stext.ui.internal;
 
-import static com.google.inject.util.Modules.override;
 import static com.google.inject.Guice.createInjector;
+import static com.google.inject.util.Modules.override;
 
-import org.apache.log4j.Logger;
+import java.util.HashMap;
+import java.util.Map;
 
+import org.apache.log4j.Logger;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
 import com.google.inject.Injector;
 import com.google.inject.Module;
 
-import java.util.Map;
-import java.util.HashMap;
-
 /**
  * This class was generated. Customizations should only happen in a newly
  * introduced subclass. 

+ 1 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/STextStandaloneSetupGenerated.java

@@ -2,8 +2,8 @@
 package org.yakindu.sct.model.stext;
 
 import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.ISetup;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.ISetup;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;

+ 8 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java

@@ -3,11 +3,16 @@
 */
 package org.yakindu.sct.model.stext.parseTreeConstruction;
 
-import org.eclipse.emf.ecore.*;
-import org.eclipse.xtext.*;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Alternatives;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.UnorderedGroup;
 import org.eclipse.xtext.parsetree.reconstr.IEObjectConsumer;
 import org.eclipse.xtext.parsetree.reconstr.impl.AbstractParseTreeConstructor;
-
 import org.yakindu.sct.model.stext.services.STextGrammarAccess;
 
 import com.google.inject.Inject;

+ 1 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/STextAntlrTokenFileProvider.java

@@ -4,6 +4,7 @@
 package org.yakindu.sct.model.stext.parser.antlr;
 
 import java.io.InputStream;
+
 import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
 
 public class STextAntlrTokenFileProvider implements IAntlrTokenFileProvider {

+ 2 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/STextParser.java

@@ -3,11 +3,11 @@
 */
 package org.yakindu.sct.model.stext.parser.antlr;
 
-import com.google.inject.Inject;
-
 import org.eclipse.xtext.parser.antlr.XtextTokenStream;
 import org.yakindu.sct.model.stext.services.STextGrammarAccess;
 
+import com.google.inject.Inject;
+
 public class STextParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
 	
 	@Inject

+ 9 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java

@@ -2,14 +2,17 @@ package org.yakindu.sct.model.stext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
 // Currently there is no other way to specify the superclass for the lexer.
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
 import org.eclipse.xtext.parser.antlr.Lexer;
 
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-
 @SuppressWarnings("all")
 public class InternalSTextLexer extends Lexer {
     public static final int T__42=42;

+ 12 - 16
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java

@@ -1,25 +1,21 @@
 package org.yakindu.sct.model.stext.parser.antlr.internal; 
 
-import org.eclipse.xtext.*;
-import org.eclipse.xtext.parser.*;
-import org.eclipse.xtext.parser.impl.*;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.EObject;
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.EarlyExitException;
+import org.antlr.runtime.FailedPredicateException;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.RecognizerSharedState;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.TokenStream;
 import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
-import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
 import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
 import org.yakindu.sct.model.stext.services.STextGrammarAccess;
-
-
-
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
 @SuppressWarnings("all")
 public class InternalSTextParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {

+ 18 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java

@@ -4,14 +4,26 @@
 
 package org.yakindu.sct.model.stext.services;
 
-import com.google.inject.Singleton;
-import com.google.inject.Inject;
-
-import org.eclipse.xtext.*;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Alternatives;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.EnumLiteralDeclaration;
+import org.eclipse.xtext.EnumRule;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.TerminalRule;
+import org.eclipse.xtext.UnorderedGroup;
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
 import org.eclipse.xtext.service.GrammarProvider;
-import org.eclipse.xtext.service.AbstractElementFinder.*;
 
-import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
 
 @Singleton
 public class STextGrammarAccess extends AbstractGrammarElementFinder {

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Operation.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.yakindu.sct.model.sgraph.Declaration;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionEffect.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.yakindu.sct.model.sgraph.Effect;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionProperties.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EObject;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ReactionTrigger.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.yakindu.sct.model.sgraph.Trigger;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/Root.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EObject;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StateDeclaration.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.ecore.EObject;
-
 import org.yakindu.sct.model.sgraph.Scope;
 
 /**

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StatechartDefinition.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EObject;
-
 import org.yakindu.sct.model.sgraph.Scope;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java

@@ -10,7 +10,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
-
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 
 /**

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AlwaysEventImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.AlwaysEvent;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/AssignmentImpl.java

@@ -7,14 +7,10 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.sgraph.Variable;
-
 import org.yakindu.sct.model.stext.stext.Assignment;
 import org.yakindu.sct.model.stext.stext.AssignmentOperator;
 import org.yakindu.sct.model.stext.stext.Expression;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseAndExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.BitwiseAndExpression;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseOrExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.BitwiseOrExpression;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BitwiseXorExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.BitwiseXorExpression;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/BuiltinEventSpecImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.BuiltinEventSpec;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ClockImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
-
 import org.yakindu.sct.model.stext.stext.Clock;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ConditionalExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.ConditionalExpression;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/DefRootImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.stext.stext.DefRoot;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ElementReferenceExpressionImpl.java

@@ -6,14 +6,10 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.sgraph.Declaration;
-
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryEventImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.EntryEvent;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryPointSpecImpl.java

@@ -6,12 +6,9 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.stext.stext.EntryPointSpec;
 import org.yakindu.sct.model.stext.stext.Entrypoint;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntrypointImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
-
 import org.yakindu.sct.model.stext.stext.Entrypoint;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventDefinitionImpl.java

@@ -7,14 +7,10 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.sgraph.impl.EventImpl;
-
 import org.yakindu.sct.model.stext.stext.Direction;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.EventDerivation;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventDerivationImpl.java

@@ -7,13 +7,10 @@ package org.yakindu.sct.model.stext.stext.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.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.stext.stext.EventDerivation;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventRaisingImpl.java

@@ -7,14 +7,10 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.sgraph.Event;
-
 import org.yakindu.sct.model.stext.stext.EventRaising;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EventSpecImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.stext.stext.EventSpec;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitEventImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.ExitEvent;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitPointSpecImpl.java

@@ -6,12 +6,9 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.stext.stext.ExitPointSpec;
 import org.yakindu.sct.model.stext.stext.Exitpoint;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitpointImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
-
 import org.yakindu.sct.model.stext.stext.Exitpoint;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExpressionImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/InterfaceScopeImpl.java

@@ -6,13 +6,9 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.sgraph.impl.ScopeImpl;
-
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/InternalScopeImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.sgraph.impl.ScopeImpl;
-
 import org.yakindu.sct.model.stext.stext.InternalScope;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 5
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java

@@ -7,19 +7,14 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Reaction;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Trigger;
-
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
-
 import org.yakindu.sct.model.stext.stext.LocalReaction;
 import org.yakindu.sct.model.stext.stext.ReactionProperties;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalAndExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.LogicalAndExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalNotExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.LogicalNotExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalOrExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.LogicalOrExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LogicalRelationExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.LogicalRelationExpression;
 import org.yakindu.sct.model.stext.stext.RelationalOperator;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalAddSubtractExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.AdditiveOperator;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.NumericalAddSubtractExpression;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalMultiplyDivideExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.MultiplicativeOperator;
 import org.yakindu.sct.model.stext.stext.NumericalMultiplyDivideExpression;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/NumericalUnaryExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.NumericalUnaryExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OnCycleEventImpl.java

@@ -6,7 +6,6 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.stext.stext.OnCycleEvent;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 5
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OperationCallImpl.java

@@ -9,17 +9,12 @@ 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.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.Operation;
 import org.yakindu.sct.model.stext.stext.OperationCall;

+ 0 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/OperationImpl.java

@@ -8,17 +8,11 @@ package org.yakindu.sct.model.stext.stext.impl;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.eclipse.emf.ecore.util.EDataTypeEList;
-
 import org.yakindu.sct.model.sgraph.impl.DeclarationImpl;
-
 import org.yakindu.sct.model.stext.stext.Operation;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 import org.yakindu.sct.model.stext.stext.Type;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/PrimitiveValueExpressionImpl.java

@@ -6,11 +6,8 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 5
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionEffectImpl.java

@@ -8,17 +8,12 @@ package org.yakindu.sct.model.stext.stext.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.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.sgraph.impl.EffectImpl;
-
 import org.yakindu.sct.model.stext.stext.ReactionEffect;
 import org.yakindu.sct.model.stext.stext.Statement;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPriorityImpl.java

@@ -6,11 +6,8 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.stext.stext.ReactionPriority;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 5
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPropertiesImpl.java

@@ -8,17 +8,12 @@ package org.yakindu.sct.model.stext.stext.impl;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.stext.stext.ReactionProperties;
 import org.yakindu.sct.model.stext.stext.ReactionProperty;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionPropertyImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.stext.stext.ReactionProperty;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ReactionTriggerImpl.java

@@ -9,19 +9,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.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.sgraph.impl.TriggerImpl;
-
 import org.yakindu.sct.model.stext.stext.EventSpec;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.ReactionTrigger;

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/RegularEventSpecImpl.java

@@ -6,14 +6,10 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.sct.model.sgraph.Event;
-
 import org.yakindu.sct.model.stext.stext.RegularEventSpec;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 5
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/RootImpl.java

@@ -8,17 +8,12 @@ package org.yakindu.sct.model.stext.stext.impl;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.stext.stext.DefRoot;
 import org.yakindu.sct.model.stext.stext.Root;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ShiftExpressionImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.ShiftExpression;
 import org.yakindu.sct.model.stext.stext.ShiftOperator;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/SimpleScopeImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.yakindu.sct.model.sgraph.impl.ScopeImpl;
-
 import org.yakindu.sct.model.stext.stext.SimpleScope;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StateDeclarationImpl.java

@@ -7,15 +7,11 @@ package org.yakindu.sct.model.stext.stext.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.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.sgraph.Scope;
-
 import org.yakindu.sct.model.stext.stext.StateDeclaration;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StateRootImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.StateDeclaration;
 import org.yakindu.sct.model.stext.stext.StateRoot;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 6
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatechartDefinitionImpl.java

@@ -8,19 +8,13 @@ package org.yakindu.sct.model.stext.stext.impl;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.NotificationChain;
-
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.yakindu.sct.model.sgraph.Scope;
-
 import org.yakindu.sct.model.stext.stext.StatechartDefinition;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 0 - 3
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatechartRootImpl.java

@@ -7,12 +7,9 @@ package org.yakindu.sct.model.stext.stext.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.yakindu.sct.model.stext.stext.StatechartDefinition;
 import org.yakindu.sct.model.stext.stext.StatechartRoot;
 import org.yakindu.sct.model.stext.stext.StextPackage;

+ 0 - 2
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StatementImpl.java

@@ -6,9 +6,7 @@
 package org.yakindu.sct.model.stext.stext.impl;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.yakindu.sct.model.stext.stext.Statement;
 import org.yakindu.sct.model.stext.stext.StextPackage;
 

+ 65 - 4
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java

@@ -9,12 +9,73 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
 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.sct.model.stext.stext.*;
+import org.yakindu.sct.model.stext.stext.AdditiveOperator;
+import org.yakindu.sct.model.stext.stext.AlwaysEvent;
+import org.yakindu.sct.model.stext.stext.Assignment;
+import org.yakindu.sct.model.stext.stext.AssignmentOperator;
+import org.yakindu.sct.model.stext.stext.BitwiseAndExpression;
+import org.yakindu.sct.model.stext.stext.BitwiseOrExpression;
+import org.yakindu.sct.model.stext.stext.BitwiseXorExpression;
+import org.yakindu.sct.model.stext.stext.BuiltinEventSpec;
+import org.yakindu.sct.model.stext.stext.Clock;
+import org.yakindu.sct.model.stext.stext.ConditionalExpression;
+import org.yakindu.sct.model.stext.stext.DefRoot;
+import org.yakindu.sct.model.stext.stext.Direction;
+import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
+import org.yakindu.sct.model.stext.stext.EntryEvent;
+import org.yakindu.sct.model.stext.stext.EntryPointSpec;
+import org.yakindu.sct.model.stext.stext.Entrypoint;
+import org.yakindu.sct.model.stext.stext.EventDefinition;
+import org.yakindu.sct.model.stext.stext.EventDerivation;
+import org.yakindu.sct.model.stext.stext.EventRaising;
+import org.yakindu.sct.model.stext.stext.EventSpec;
+import org.yakindu.sct.model.stext.stext.ExitEvent;
+import org.yakindu.sct.model.stext.stext.ExitPointSpec;
+import org.yakindu.sct.model.stext.stext.Exitpoint;
+import org.yakindu.sct.model.stext.stext.Expression;
+import org.yakindu.sct.model.stext.stext.InterfaceScope;
+import org.yakindu.sct.model.stext.stext.InternalScope;
+import org.yakindu.sct.model.stext.stext.LocalReaction;
+import org.yakindu.sct.model.stext.stext.LogicalAndExpression;
+import org.yakindu.sct.model.stext.stext.LogicalNotExpression;
+import org.yakindu.sct.model.stext.stext.LogicalOrExpression;
+import org.yakindu.sct.model.stext.stext.LogicalRelationExpression;
+import org.yakindu.sct.model.stext.stext.MultiplicativeOperator;
+import org.yakindu.sct.model.stext.stext.NumericalAddSubtractExpression;
+import org.yakindu.sct.model.stext.stext.NumericalMultiplyDivideExpression;
+import org.yakindu.sct.model.stext.stext.NumericalUnaryExpression;
+import org.yakindu.sct.model.stext.stext.OnCycleEvent;
+import org.yakindu.sct.model.stext.stext.Operation;
+import org.yakindu.sct.model.stext.stext.OperationCall;
+import org.yakindu.sct.model.stext.stext.PrimitiveValueExpression;
+import org.yakindu.sct.model.stext.stext.ReactionEffect;
+import org.yakindu.sct.model.stext.stext.ReactionPriority;
+import org.yakindu.sct.model.stext.stext.ReactionProperties;
+import org.yakindu.sct.model.stext.stext.ReactionProperty;
+import org.yakindu.sct.model.stext.stext.ReactionTrigger;
+import org.yakindu.sct.model.stext.stext.RegularEventSpec;
+import org.yakindu.sct.model.stext.stext.RelationalOperator;
+import org.yakindu.sct.model.stext.stext.Root;
+import org.yakindu.sct.model.stext.stext.ShiftExpression;
+import org.yakindu.sct.model.stext.stext.ShiftOperator;
+import org.yakindu.sct.model.stext.stext.SimpleScope;
+import org.yakindu.sct.model.stext.stext.StateDeclaration;
+import org.yakindu.sct.model.stext.stext.StateRoot;
+import org.yakindu.sct.model.stext.stext.StatechartDefinition;
+import org.yakindu.sct.model.stext.stext.StatechartRoot;
+import org.yakindu.sct.model.stext.stext.Statement;
+import org.yakindu.sct.model.stext.stext.StextFactory;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+import org.yakindu.sct.model.stext.stext.TimeEventSpec;
+import org.yakindu.sct.model.stext.stext.TimeUnit;
+import org.yakindu.sct.model.stext.stext.TransitionReaction;
+import org.yakindu.sct.model.stext.stext.TransitionRoot;
+import org.yakindu.sct.model.stext.stext.TransitionStatement;
+import org.yakindu.sct.model.stext.stext.Type;
+import org.yakindu.sct.model.stext.stext.UnaryOperator;
+import org.yakindu.sct.model.stext.stext.VariableDefinition;
 
 /**
  * <!-- begin-user-doc -->

+ 0 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java


Некоторые файлы не были показаны из-за большого количества измененных файлов