Browse Source

#1429 : integrate task finder (#1468)

* #1429 : integrate task finder

* add autom. test case
* add manual test case

* #1429 : adjust manual test case

* reuse test model

* #1429 : test plugin should not be a fragment

*try solve injection problems (no resource bound)

* #1429 : try loading generic domain

* seems the domain injector does not have any bindings during execution
on buildserver

* trivial 

* copyright header
Johannes Dicks 8 years ago
parent
commit
40a8038e8f
17 changed files with 695 additions and 77 deletions
  1. 2 1
      manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_02_editor.textile
  2. 2 1
      plugins/org.yakindu.sct.model.resource/META-INF/MANIFEST.MF
  3. 37 75
      plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/SCTExecutableExtensionFactory.java
  4. 62 0
      plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/SCTXtextIntegrationModule.java
  5. 44 0
      plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/tasks/DomainSpecificTaskFinder.java
  6. 1 0
      releng/org.yakindu.sct.releng/pom.xml
  7. 7 0
      test-plugins/org.yakindu.sct.model.resource.test/.classpath
  8. 1 0
      test-plugins/org.yakindu.sct.model.resource.test/.gitignore
  9. 28 0
      test-plugins/org.yakindu.sct.model.resource.test/.project
  10. 11 0
      test-plugins/org.yakindu.sct.model.resource.test/.settings/org.eclipse.jdt.core.prefs
  11. 15 0
      test-plugins/org.yakindu.sct.model.resource.test/META-INF/MANIFEST.MF
  12. 3 0
      test-plugins/org.yakindu.sct.model.resource.test/build.properties
  13. 33 0
      test-plugins/org.yakindu.sct.model.resource.test/pom.xml
  14. 21 0
      test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/AllTests.java
  15. 88 0
      test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/DomainSpecificTaskFinderTest.java
  16. 39 0
      test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/SCTTestInjectorProvider.java
  17. 301 0
      test-plugins/org.yakindu.sct.model.resource.test/testdata/Tasks.sct

+ 2 - 1
manual-tests/org.yakindu.sct.test.manual/testcases/sct_testcase_02_editor.textile

@@ -24,4 +24,5 @@ h1(#Test2). Yakindu SCT Testcase 02 - Editor
 | 2.16.3 | Navigator View | Expand the region entry in the tree view. | The initial state and the LightOff and LightOn states are displayed as children with icons. | %{color:red}open% |
 | 2.16.4 | Navigator View | Expand the states entries in the tree view. | The outgoing transitions of the states are displayed with icon and trigger/guard. | %{color:red}open% |
 | 2.17 | View | Press *[Ctrl++]* to zoom in and *[Ctrl--]* to zoom out. | The view should zoom in and out. | %{color:red}open% |
-| 2.18 | Undo & Redo | Select a region which includes at least a state with an outgoing transition <p> Press *DEL* to delete the region <p>Undo deletion by Strg+Z <p> Redo deletion by Strg+Y <p> Try to move the affected element by dragging | The deletion should properly be undone and redone<p> The elements involved during undo and redo have to be still changeable (move, delete change e.g. name) afterwards | %{color:red}open% |
+| 2.18 | Undo & Redo | Select a region which includes at least a state with an outgoing transition <p> Press *DEL* to delete the region <p>Undo deletion by Strg+Z <p> Redo deletion by Strg+Y <p> Try to move the affected element by dragging | The deletion should properly be undone and redone<p> The elements involved during undo and redo have to be still changeable (move, delete change e.g. name) afterwards | %{color:red}open% |
+| 2.19 | Tasks | Open /org.yakindu.sct.model.resource.test/testdata/Tasks.sct | check if all //TODO & //FIXME will be shown in Tasks-View | %{color:red}open% |

+ 2 - 1
plugins/org.yakindu.sct.model.resource/META-INF/MANIFEST.MF

@@ -18,4 +18,5 @@ Require-Bundle: org.eclipse.ui,
  org.yakindu.sct.ui.editor
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
-Export-Package: org.yakindu.sct.model.resource
+Export-Package: org.yakindu.sct.model.resource,
+ org.yakindu.sct.model.resource.tasks

+ 37 - 75
plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/SCTExecutableExtensionFactory.java

@@ -1,76 +1,38 @@
-/**
- * Copyright (c) 2016 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.resource;
-
-import org.eclipse.xtext.Constants;
-import org.eclipse.xtext.naming.IQualifiedNameProvider;
-import org.eclipse.xtext.parser.IEncodingProvider;
-import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
-import org.eclipse.xtext.ui.LanguageSpecific;
-import org.eclipse.xtext.ui.editor.IURIEditorOpener;
-import org.eclipse.xtext.ui.editor.validation.MarkerCreator;
-import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
-import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.eclipse.xtext.ui.validation.MarkerTypeProvider;
-import org.eclipse.xtext.validation.IDiagnosticConverter;
-import org.eclipse.xtext.validation.IResourceValidator;
-import org.osgi.framework.Bundle;
-import org.yakindu.sct.model.sgraph.ui.validation.SCTDiagnosticConverterImpl;
-import org.yakindu.sct.model.sgraph.ui.validation.SCTMarkerCreator;
-import org.yakindu.sct.model.sgraph.ui.validation.SCTMarkerTypeProvider;
-import org.yakindu.sct.model.stext.naming.StextNameProvider;
-import org.yakindu.sct.model.stext.resource.SCTResourceDescriptionStrategy;
-import org.yakindu.sct.model.stext.resource.SCTResourceValidatorImpl;
-import org.yakindu.sct.ui.editor.editor.SCTFileEditorOpener;
-
-import com.google.inject.Binder;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.name.Names;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class SCTExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
-
-	@Override
-	protected Bundle getBundle() {
-		return Activator.getDefault().getBundle();
-	}
-
-	@Override
-	protected Injector getInjector() {
-		// TODO: Provide a sharedDomainModule via DomainRegistry to allow
-		// overriding of generic bindings
-		return Guice.createInjector(new SharedStateModule(), new Module() {
-			@Override
-			public void configure(Binder binder) {
-				binder.bind(IResourceValidator.class).to(SCTResourceValidatorImpl.class);
-				binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("sct");
-				binder.bind(IEncodingProvider.class).to(IEncodingProvider.Runtime.class);
-				binder.bind(IQualifiedNameProvider.class).to(StextNameProvider.class);
-				binder.bind(org.eclipse.jface.viewers.ILabelProvider.class)
-						.annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class)
-						.to(DefaultDescriptionLabelProvider.class);
-				binder.bind(IDefaultResourceDescriptionStrategy.class).to(SCTResourceDescriptionStrategy.class);
-				
-				binder.bind(MarkerCreator.class).to(SCTMarkerCreator.class);
-				binder.bind(MarkerTypeProvider.class).to(SCTMarkerTypeProvider.class);
-				binder.bind(IDiagnosticConverter.class).to(SCTDiagnosticConverterImpl.class);
-				binder.bind(IURIEditorOpener.class).annotatedWith(LanguageSpecific.class).to(SCTFileEditorOpener.class);
-			}
-		});
-	}
-
+/**
+ * Copyright (c) 2016 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.resource;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SCTExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return Activator.getDefault().getBundle();
+	}
+
+	@Override
+	protected Injector getInjector() {
+		// TODO: Provide a sharedDomainModule via DomainRegistry to allow
+		// overriding of generic bindings
+		return Guice.createInjector(new SharedStateModule(), new SCTXtextIntegrationModule());
+	}
+
 }

+ 62 - 0
plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/SCTXtextIntegrationModule.java

@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2017 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.resource;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.parser.IEncodingProvider;
+import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
+import org.eclipse.xtext.tasks.ITaskFinder;
+import org.eclipse.xtext.ui.LanguageSpecific;
+import org.eclipse.xtext.ui.editor.IURIEditorOpener;
+import org.eclipse.xtext.ui.editor.validation.MarkerCreator;
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+import org.eclipse.xtext.ui.markers.IMarkerContributor;
+import org.eclipse.xtext.ui.tasks.TaskMarkerContributor;
+import org.eclipse.xtext.ui.validation.MarkerTypeProvider;
+import org.eclipse.xtext.validation.IDiagnosticConverter;
+import org.eclipse.xtext.validation.IResourceValidator;
+import org.yakindu.sct.model.resource.tasks.DomainSpecificTaskFinder;
+import org.yakindu.sct.model.sgraph.ui.validation.SCTDiagnosticConverterImpl;
+import org.yakindu.sct.model.sgraph.ui.validation.SCTMarkerCreator;
+import org.yakindu.sct.model.sgraph.ui.validation.SCTMarkerTypeProvider;
+import org.yakindu.sct.model.stext.naming.StextNameProvider;
+import org.yakindu.sct.model.stext.resource.SCTResourceDescriptionStrategy;
+import org.yakindu.sct.model.stext.resource.SCTResourceValidatorImpl;
+import org.yakindu.sct.ui.editor.editor.SCTFileEditorOpener;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+import com.google.inject.name.Names;
+/**
+ * @author Johannes Dicks - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+public class SCTXtextIntegrationModule implements Module {
+	@Override
+	public void configure(Binder binder) {
+		binder.bind(IResourceValidator.class).to(SCTResourceValidatorImpl.class);
+		binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("sct");
+		binder.bind(IEncodingProvider.class).to(IEncodingProvider.Runtime.class);
+		binder.bind(IQualifiedNameProvider.class).to(StextNameProvider.class);
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class)
+				.annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class)
+				.to(DefaultDescriptionLabelProvider.class);
+		binder.bind(IDefaultResourceDescriptionStrategy.class).to(SCTResourceDescriptionStrategy.class);
+		
+		binder.bind(MarkerCreator.class).to(SCTMarkerCreator.class);
+		binder.bind(MarkerTypeProvider.class).to(SCTMarkerTypeProvider.class);
+		binder.bind(IDiagnosticConverter.class).to(SCTDiagnosticConverterImpl.class);
+		binder.bind(IURIEditorOpener.class).annotatedWith(LanguageSpecific.class).to(SCTFileEditorOpener.class);
+		
+		binder.bind(IMarkerContributor.class).to(TaskMarkerContributor.class);
+		binder.bind(ITaskFinder.class).to(DomainSpecificTaskFinder.class);
+	}
+}

+ 44 - 0
plugins/org.yakindu.sct.model.resource/src/org/yakindu/sct/model/resource/tasks/DomainSpecificTaskFinder.java

@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2017 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.resource.tasks;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.xtext.tasks.ITaskFinder;
+import org.eclipse.xtext.tasks.Task;
+import org.yakindu.sct.domain.extension.DomainRegistry;
+import org.yakindu.sct.domain.extension.IDomain;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+import org.yakindu.sct.model.sgraph.resource.AbstractSCTResource;
+/**
+ * 
+ * @author Johannes Dicks - Initial contribution and API
+ * 
+ */
+@SuppressWarnings("restriction")
+public class DomainSpecificTaskFinder implements ITaskFinder {
+
+	@Override
+	public List<Task> findTasks(Resource resource) {
+		if (resource instanceof AbstractSCTResource) {
+			IDomain domain = DomainRegistry.getDomain(
+					(EObject) EcoreUtil2.getObjectByType(resource.getContents(), SGraphPackage.Literals.STATECHART));
+			ITaskFinder taskFinder = domain.getInjector(IDomain.FEATURE_RESOURCE).getInstance(ITaskFinder.class);
+			if (taskFinder != null)
+				return taskFinder.findTasks(resource);
+		}
+		return Collections.emptyList();
+	}
+
+}

+ 1 - 0
releng/org.yakindu.sct.releng/pom.xml

@@ -366,6 +366,7 @@
 				<module>../../test-plugins/org.yakindu.sct.model.sexec.test</module>
 				<module>../../test-plugins/org.yakindu.sct.model.sgraph.test</module>
 				<module>../../test-plugins/org.yakindu.sct.generator.genmodel.test</module>
+				<module>../../test-plugins/org.yakindu.sct.model.resource.test</module>
 				<module>../../test-plugins/org.yakindu.sct.model.stext.resource.test</module>
 				<module>../../test-plugins/org.yakindu.sct.model.stext.test</module>
 				<module>../../test-plugins/org.yakindu.sct.simulation.core.sexec.test</module>

+ 7 - 0
test-plugins/org.yakindu.sct.model.resource.test/.classpath

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 1 - 0
test-plugins/org.yakindu.sct.model.resource.test/.gitignore

@@ -0,0 +1 @@
+/bin/

+ 28 - 0
test-plugins/org.yakindu.sct.model.resource.test/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.model.resource.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>

+ 11 - 0
test-plugins/org.yakindu.sct.model.resource.test/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8

+ 15 - 0
test-plugins/org.yakindu.sct.model.resource.test/META-INF/MANIFEST.MF

@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: YAKINDU SCT Resource Tests
+Bundle-SymbolicName: org.yakindu.sct.model.resource.test
+Bundle-Version: 3.0.0.qualifier
+Export-Package: org.yakindu.sct.model.resource.test
+Require-Bundle: org.junit,
+ org.yakindu.sct.test.models,
+ org.eclipse.xtext.junit4,
+ org.yakindu.sct.model.stext.ui,
+ org.yakindu.sct.model.resource,
+ org.eclipse.xtext.ui.shared,
+ org.yakindu.sct.domain.generic.resource
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: statecharts.org

+ 3 - 0
test-plugins/org.yakindu.sct.model.resource.test/build.properties

@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .

+ 33 - 0
test-plugins/org.yakindu.sct.model.resource.test/pom.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.yakindu.sct</groupId>
+		<artifactId>org.yakindu.sct.releng</artifactId>
+		<version>3.0.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.yakindu.sct.releng/pom.xml</relativePath>
+	</parent>
+	<artifactId>org.yakindu.sct.model.resource.test</artifactId>
+	<groupId>org.yakindu.sct.plugins</groupId>
+	<packaging>eclipse-test-plugin</packaging>
+	<build>
+	<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<configuration>
+					<includes>
+						<include>**/All*Tests.class</include>
+					</includes>
+					<useUIHarness>true</useUIHarness>
+					<useUIThread>true</useUIThread>
+					<testFailureIgnore>${testFailureIgnore}</testFailureIgnore>
+					<argLine>${test.vmargs}</argLine>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 21 - 0
test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/AllTests.java

@@ -0,0 +1,21 @@
+/** 
+ * Copyright (c) 2016 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.resource.test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({DomainSpecificTaskFinderTest.class})
+public class AllTests {
+
+}

+ 88 - 0
test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/DomainSpecificTaskFinderTest.java

@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2017 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.resource.test;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.junit4.InjectWith;
+import org.eclipse.xtext.junit4.XtextRunner;
+import org.eclipse.xtext.tasks.Task;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.yakindu.sct.model.resource.tasks.DomainSpecificTaskFinder;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.inject.Inject;
+
+/**
+ * @author Johannes Dicks - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+@RunWith(XtextRunner.class)
+@InjectWith(SCTTestInjectorProvider.class)
+public class DomainSpecificTaskFinderTest {
+
+	private static final String TAG_FIXME = "FIXME";
+	private static final String TAG_TODO = "TODO";
+	private static final String TEST_MODEL_WITH_TASKS = "/org.yakindu.sct.model.resource.test/testdata/Tasks.sct";
+	private static final int EXPECT_TASKS_FOUND = 15;
+	private static final int EXPECT_FIXME_FOUND = 8;
+	private static final int EXPECT_TODO_FOUND = 7;
+
+	@Inject
+	DomainSpecificTaskFinder taskFinder;
+	private List<Task> foundTasks;
+
+	@Inject
+	private ResourceSet resourceSet;
+
+	@Test
+	public void testFindTODOs() {
+
+		assertEquals(EXPECT_TODO_FOUND, Collections2.filter(foundTasks, new Predicate<Task>() {
+			@Override
+			public boolean apply(Task task) {
+				return task.getTag().getName().equals(TAG_TODO);
+			}
+		}).size());
+	}
+
+	@Test
+	public void testFindFIXMEs() {
+
+		assertEquals(EXPECT_FIXME_FOUND, Collections2.filter(foundTasks, new Predicate<Task>() {
+			@Override
+			public boolean apply(Task task) {
+				return task.getTag().getName().equals(TAG_FIXME);
+			}
+		}).size());
+	}
+
+	@Test
+	public void testFindAllAvailableTasks() {
+		assertEquals(EXPECT_TASKS_FOUND, foundTasks.size());
+	}
+
+	@Before
+	public void setup() {
+		URI sctWithTasks = URI.createPlatformPluginURI(
+				TEST_MODEL_WITH_TASKS, true);
+		Resource resource = resourceSet.getResource(sctWithTasks, true);
+		foundTasks = taskFinder.findTasks(resource);
+	}
+
+}

+ 39 - 0
test-plugins/org.yakindu.sct.model.resource.test/src/org/yakindu/sct/model/resource/test/SCTTestInjectorProvider.java

@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2017 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.resource.test;
+
+import static com.google.inject.Guice.createInjector;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.yakindu.sct.model.stext.STextRuntimeModule;
+import org.yakindu.sct.model.stext.ui.STextUiModule;
+import org.yakindu.sct.model.stext.ui.internal.STextActivator;
+
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+/**
+ * @author Johannes Dicks - Initial contribution and API
+ */
+public class SCTTestInjectorProvider implements IInjectorProvider {
+
+
+	public Injector getInjector() {
+
+
+		Module with2 = Modules.override(new STextRuntimeModule()).with(new SharedStateModule());
+
+		Module with3 = Modules.override(with2).with((Module) new STextUiModule(STextActivator.getInstance()));
+
+		return createInjector(with3);
+	}
+
+}

+ 301 - 0
test-plugins/org.yakindu.sct.model.resource.test/testdata/Tasks.sct

@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
+  <sgraph:Statechart xmi:id="_Tem-gFsTEeecK7pQHv942A" specification="interface:&#xA;//FIXME ...one more than todos&#xA;//TODO of specification&#xA;//FIXME of specification" name="default">
+    <regions xmi:id="_TfGGsFsTEeecK7pQHv942A" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_TfiLkFsTEeecK7pQHv942A">
+        <outgoingTransitions xmi:id="_TfyDMFsTEeecK7pQHv942A" target="_TfmdAFsTEeecK7pQHv942A"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_TfmdAFsTEeecK7pQHv942A" specification="//FIXME of state..&#xD;&#xA;//TODO of state.." name="StateA" incomingTransitions="_TfyDMFsTEeecK7pQHv942A">
+        <outgoingTransitions xmi:id="_nOlPclsbEeecK7pQHv942A" specification=" always  &#xD;&#xA; //FIXME of transition&#xD;&#xA; //TODO of transition" target="_nOjaQFsbEeecK7pQHv942A"/>
+        <regions xmi:id="_pvtGoF0DEee1T5Yvy03wHg">
+          <vertices xsi:type="sgraph:State" xmi:id="_t-nXEF0DEee1T5Yvy03wHg" specification="//TODO composite" name="A" incomingTransitions="_wlVhsF0DEee1T5Yvy03wHg"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_wSlk0F0DEee1T5Yvy03wHg">
+            <outgoingTransitions xmi:id="_wlVhsF0DEee1T5Yvy03wHg" specification="" target="_t-nXEF0DEee1T5Yvy03wHg"/>
+          </vertices>
+        </regions>
+        <regions xmi:id="_qB2mkF0DEee1T5Yvy03wHg">
+          <vertices xsi:type="sgraph:State" xmi:id="_tpNu0F0DEee1T5Yvy03wHg" specification="//FIXME composite" name="B" incomingTransitions="_xTExcF0DEee1T5Yvy03wHg"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_w2jNgF0DEee1T5Yvy03wHg">
+            <outgoingTransitions xmi:id="_xTExcF0DEee1T5Yvy03wHg" specification="" target="_tpNu0F0DEee1T5Yvy03wHg"/>
+          </vertices>
+        </regions>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_nOjaQFsbEeecK7pQHv942A" specification="//TODO of state..&#xD;&#xA;//FIXME of state.." name="AName" incomingTransitions="_nOlPclsbEeecK7pQHv942A">
+        <regions xmi:id="_k5CSoF0DEee1T5Yvy03wHg">
+          <vertices xsi:type="sgraph:State" xmi:id="_mO4EMF0DEee1T5Yvy03wHg" specification="//FIXME of subdiagram!" name="A" incomingTransitions="_5NfDQF0DEee1T5Yvy03wHg">
+            <outgoingTransitions xmi:id="_nY_t8l0DEee1T5Yvy03wHg" specification="//TODO of subdiagram.transition&#xD;&#xA;//FIXME of subdiagram.transition" target="_nY_G4F0DEee1T5Yvy03wHg"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_nY_G4F0DEee1T5Yvy03wHg" specification="//TODO of subdiagram" name="B" incomingTransitions="_nY_t8l0DEee1T5Yvy03wHg"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_41L4AF0DEee1T5Yvy03wHg">
+            <outgoingTransitions xmi:id="_5NfDQF0DEee1T5Yvy03wHg" specification="" target="_mO4EMF0DEee1T5Yvy03wHg"/>
+          </vertices>
+        </regions>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_TfE4kFsTEeecK7pQHv942A" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_Tem-gFsTEeecK7pQHv942A" measurementUnit="Pixel">
+    <children xmi:id="_TfPQoFsTEeecK7pQHv942A" type="Region" element="_TfGGsFsTEeecK7pQHv942A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_TfdTEFsTEeecK7pQHv942A" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_TfdTEVsTEeecK7pQHv942A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_TfdTElsTEeecK7pQHv942A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_TffIQFsTEeecK7pQHv942A" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_TfjZsFsTEeecK7pQHv942A" type="Entry" element="_TfiLkFsTEeecK7pQHv942A">
+          <children xmi:id="_Tfkn0FsTEeecK7pQHv942A" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_TflO4FsTEeecK7pQHv942A" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_TflO4VsTEeecK7pQHv942A"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_TflO4lsTEeecK7pQHv942A"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_Tfkn0VsTEeecK7pQHv942A" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Tfkn0lsTEeecK7pQHv942A"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_TfkAwFsTEeecK7pQHv942A" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+          <styles xsi:type="notation:NamedStyle" xmi:id="_TfkAwVsTEeecK7pQHv942A" name="allowColors"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_TflO41sTEeecK7pQHv942A" x="70" y="20" width="15" height="15"/>
+        </children>
+        <children xmi:id="_Tfr8kFsTEeecK7pQHv942A" type="State" element="_TfmdAFsTEeecK7pQHv942A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_TfsjoFsTEeecK7pQHv942A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_TfsjoVsTEeecK7pQHv942A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_TftKsFsTEeecK7pQHv942A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_Tfvm8FsTEeecK7pQHv942A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_Tfvm8VsTEeecK7pQHv942A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Tfvm8lsTEeecK7pQHv942A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_TfwOAFsTEeecK7pQHv942A" type="StateFigureCompartment">
+            <children xmi:id="_pvttsF0DEee1T5Yvy03wHg" type="Region" element="_pvtGoF0DEee1T5Yvy03wHg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_pvtts10DEee1T5Yvy03wHg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_pvtttF0DEee1T5Yvy03wHg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_pvtttV0DEee1T5Yvy03wHg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_pvtttl0DEee1T5Yvy03wHg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_t-n-IV0DEee1T5Yvy03wHg" type="State" element="_t-nXEF0DEee1T5Yvy03wHg">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_t-olMF0DEee1T5Yvy03wHg" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_t-olMV0DEee1T5Yvy03wHg"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_t-olMl0DEee1T5Yvy03wHg"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_t-olM10DEee1T5Yvy03wHg" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_t-olNF0DEee1T5Yvy03wHg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_t-olNV0DEee1T5Yvy03wHg"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_t-olNl0DEee1T5Yvy03wHg" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_t-n-Il0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_t-n-I10DEee1T5Yvy03wHg"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_t-olN10DEee1T5Yvy03wHg" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_t-n-JF0DEee1T5Yvy03wHg" x="49" y="4"/>
+                </children>
+                <children xmi:id="_wSpPMF0DEee1T5Yvy03wHg" type="Entry" element="_wSlk0F0DEee1T5Yvy03wHg">
+                  <children xmi:id="_wSp2QF0DEee1T5Yvy03wHg" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_wSp2Q10DEee1T5Yvy03wHg" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_wSp2RF0DEee1T5Yvy03wHg"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_wSp2RV0DEee1T5Yvy03wHg"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_wSp2QV0DEee1T5Yvy03wHg" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_wSp2Ql0DEee1T5Yvy03wHg"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_wSpPMV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_wSpPMl0DEee1T5Yvy03wHg" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_wSpPM10DEee1T5Yvy03wHg" x="6" y="18"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_pvttt10DEee1T5Yvy03wHg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_pvttsV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_pvttsl0DEee1T5Yvy03wHg"/>
+            </children>
+            <children xmi:id="_qB3NoF0DEee1T5Yvy03wHg" type="Region" element="_qB2mkF0DEee1T5Yvy03wHg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_qB3No10DEee1T5Yvy03wHg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_qB3NpF0DEee1T5Yvy03wHg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_qB30sF0DEee1T5Yvy03wHg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_qB30sV0DEee1T5Yvy03wHg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_tpO88F0DEee1T5Yvy03wHg" type="State" element="_tpNu0F0DEee1T5Yvy03wHg">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_tpO89F0DEee1T5Yvy03wHg" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tpO89V0DEee1T5Yvy03wHg"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_tpO89l0DEee1T5Yvy03wHg"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_tpO8910DEee1T5Yvy03wHg" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_tpO8-F0DEee1T5Yvy03wHg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tpO8-V0DEee1T5Yvy03wHg"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_tpO8-l0DEee1T5Yvy03wHg" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tpO88V0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_tpO88l0DEee1T5Yvy03wHg"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tpPkAF0DEee1T5Yvy03wHg" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tpO8810DEee1T5Yvy03wHg" x="83" y="-1"/>
+                </children>
+                <children xmi:id="_w2jNgV0DEee1T5Yvy03wHg" type="Entry" element="_w2jNgF0DEee1T5Yvy03wHg">
+                  <children xmi:id="_w2j0kF0DEee1T5Yvy03wHg" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_w2j0k10DEee1T5Yvy03wHg" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_w2j0lF0DEee1T5Yvy03wHg"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_w2j0lV0DEee1T5Yvy03wHg"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_w2j0kV0DEee1T5Yvy03wHg" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_w2j0kl0DEee1T5Yvy03wHg"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_w2jNgl0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_w2jNg10DEee1T5Yvy03wHg" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_w2jNhF0DEee1T5Yvy03wHg" x="20" y="19"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_qB30sl0DEee1T5Yvy03wHg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_qB3NoV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_qB3Nol0DEee1T5Yvy03wHg"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_Tfr8kVsTEeecK7pQHv942A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_Tfr8klsTEeecK7pQHv942A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_Tfw1EFsTEeecK7pQHv942A" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_TfxcIFsTEeecK7pQHv942A" x="114" y="72" width="467" height="155"/>
+        </children>
+        <children xmi:id="_nOmdkFsbEeecK7pQHv942A" type="State" element="_nOjaQFsbEeecK7pQHv942A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_nOnEoFsbEeecK7pQHv942A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_nOnEoVsbEeecK7pQHv942A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_nOnEolsbEeecK7pQHv942A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_nOnEo1sbEeecK7pQHv942A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_nOnEpFsbEeecK7pQHv942A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_nOnEpVsbEeecK7pQHv942A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_nOnEplsbEeecK7pQHv942A" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_nOmdkVsbEeecK7pQHv942A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_nOmdklsbEeecK7pQHv942A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_nOnrsFsbEeecK7pQHv942A" name="isHorizontal" booleanValue="true"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_o2g00F0DEee1T5Yvy03wHg" name="isInline"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_nOmdk1sbEeecK7pQHv942A" x="44" y="357"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_TffIQVsTEeecK7pQHv942A"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_TfPQoVsTEeecK7pQHv942A" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_TfgWYFsTEeecK7pQHv942A" x="220" y="10" width="617" height="484"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_Tf8bQFsTEeecK7pQHv942A" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_Tf9CUFsTEeecK7pQHv942A" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_Tf9CUVsTEeecK7pQHv942A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_Tf9CUlsTEeecK7pQHv942A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_Tf9CU1sTEeecK7pQHv942A" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Tf9CVFsTEeecK7pQHv942A"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Tf9pYFsTEeecK7pQHv942A" x="10" y="10" width="210" height="86"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_TfE4kVsTEeecK7pQHv942A"/>
+    <edges xmi:id="_Tf7NIFsTEeecK7pQHv942A" type="Transition" element="_TfyDMFsTEeecK7pQHv942A" source="_TfjZsFsTEeecK7pQHv942A" target="_Tfr8kFsTEeecK7pQHv942A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_Tf70MVsTEeecK7pQHv942A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_Tf70MlsTEeecK7pQHv942A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_Tf70M1sTEeecK7pQHv942A" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_Tf7NIVsTEeecK7pQHv942A" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_Tf70MFsTEeecK7pQHv942A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_Tf7NIlsTEeecK7pQHv942A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:id="_nOr9IFsbEeecK7pQHv942A" type="Transition" element="_nOlPclsbEeecK7pQHv942A" source="_Tfr8kFsTEeecK7pQHv942A" target="_nOmdkFsbEeecK7pQHv942A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_nOr9JFsbEeecK7pQHv942A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_nOr9JVsbEeecK7pQHv942A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_nOr9JlsbEeecK7pQHv942A" x="-135" y="-74"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_nOr9IVsbEeecK7pQHv942A" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_nOr9I1sbEeecK7pQHv942A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_nOr9IlsbEeecK7pQHv942A" points="[-16, -24, 54, 83]$[-68, -104, 2, 3]"/>
+    </edges>
+    <edges xmi:id="_nZRawF0DEee1T5Yvy03wHg" type="Transition" element="_nY_t8l0DEee1T5Yvy03wHg" source="_mO5SUF0DEee1T5Yvy03wHg" target="_nZHCsF0DEee1T5Yvy03wHg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_nZRaxF0DEee1T5Yvy03wHg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_nZRaxV0DEee1T5Yvy03wHg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_nZSB0F0DEee1T5Yvy03wHg" x="-68" y="37"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_nZRawV0DEee1T5Yvy03wHg" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_nZRaw10DEee1T5Yvy03wHg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_nZRawl0DEee1T5Yvy03wHg" points="[-17, -12, 67, 46]$[-81, -56, 3, 2]"/>
+    </edges>
+    <edges xmi:id="_wlWv0F0DEee1T5Yvy03wHg" type="Transition" element="_wlVhsF0DEee1T5Yvy03wHg" source="_wSpPMF0DEee1T5Yvy03wHg" target="_t-n-IV0DEee1T5Yvy03wHg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_wlWv1F0DEee1T5Yvy03wHg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_wlWv1V0DEee1T5Yvy03wHg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_wlWv1l0DEee1T5Yvy03wHg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_wlWv0V0DEee1T5Yvy03wHg" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_wlWv010DEee1T5Yvy03wHg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_wlWv0l0DEee1T5Yvy03wHg" points="[7, 0, -46, -3]$[71, 6, 18, 3]"/>
+    </edges>
+    <edges xmi:id="_xTF_kF0DEee1T5Yvy03wHg" type="Transition" element="_xTExcF0DEee1T5Yvy03wHg" source="_w2jNgV0DEee1T5Yvy03wHg" target="_tpO88F0DEee1T5Yvy03wHg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_xTF_lF0DEee1T5Yvy03wHg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_xTF_lV0DEee1T5Yvy03wHg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_xTF_ll0DEee1T5Yvy03wHg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_xTF_kV0DEee1T5Yvy03wHg" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_xTF_k10DEee1T5Yvy03wHg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_xTF_kl0DEee1T5Yvy03wHg" points="[7, 0, -66, 3]$[70, 21, -3, 24]"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_o2jREF0DEee1T5Yvy03wHg" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_nOjaQFsbEeecK7pQHv942A" measurementUnit="Pixel">
+    <children xmi:id="_k5F9AF0DEee1T5Yvy03wHg" type="Region" element="_k5CSoF0DEee1T5Yvy03wHg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_k5JnYF0DEee1T5Yvy03wHg" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_k5JnYV0DEee1T5Yvy03wHg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_k5KOcF0DEee1T5Yvy03wHg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_k5KOcV0DEee1T5Yvy03wHg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_mO5SUF0DEee1T5Yvy03wHg" type="State" element="_mO4EMF0DEee1T5Yvy03wHg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_mO55YF0DEee1T5Yvy03wHg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_mO55YV0DEee1T5Yvy03wHg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_mO55Yl0DEee1T5Yvy03wHg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_mO55Y10DEee1T5Yvy03wHg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_mO6gcF0DEee1T5Yvy03wHg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_mO6gcV0DEee1T5Yvy03wHg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_mO6gcl0DEee1T5Yvy03wHg" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_mO5SUV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_mO5SUl0DEee1T5Yvy03wHg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_mO6gc10DEee1T5Yvy03wHg" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_mO5SU10DEee1T5Yvy03wHg" x="64" y="31"/>
+        </children>
+        <children xmi:id="_nZHCsF0DEee1T5Yvy03wHg" type="State" element="_nY_G4F0DEee1T5Yvy03wHg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_nZHpw10DEee1T5Yvy03wHg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_nZHpxF0DEee1T5Yvy03wHg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_nZHpxV0DEee1T5Yvy03wHg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_nZHpxl0DEee1T5Yvy03wHg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_nZHpx10DEee1T5Yvy03wHg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_nZHpyF0DEee1T5Yvy03wHg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_nZIQ0F0DEee1T5Yvy03wHg" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_nZHpwF0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_nZHpwV0DEee1T5Yvy03wHg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_nZIQ0V0DEee1T5Yvy03wHg" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_nZHpwl0DEee1T5Yvy03wHg" x="309" y="192"/>
+        </children>
+        <children xmi:id="_41O7UF0DEee1T5Yvy03wHg" type="Entry" element="_41L4AF0DEee1T5Yvy03wHg">
+          <children xmi:id="_41O7VF0DEee1T5Yvy03wHg" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_41O7V10DEee1T5Yvy03wHg" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_41O7WF0DEee1T5Yvy03wHg"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_41O7WV0DEee1T5Yvy03wHg"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_41O7VV0DEee1T5Yvy03wHg" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_41O7Vl0DEee1T5Yvy03wHg"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_41O7UV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+          <styles xsi:type="notation:NamedStyle" xmi:id="_41O7Ul0DEee1T5Yvy03wHg" name="allowColors"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_41O7U10DEee1T5Yvy03wHg" x="19" y="26"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_k5KOcl0DEee1T5Yvy03wHg"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_k5F9AV0DEee1T5Yvy03wHg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_k5F9Al0DEee1T5Yvy03wHg" width="511" height="298"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_o2jREV0DEee1T5Yvy03wHg"/>
+    <edges xmi:id="_5NgRYF0DEee1T5Yvy03wHg" type="Transition" element="_5NfDQF0DEee1T5Yvy03wHg" source="_41O7UF0DEee1T5Yvy03wHg" target="_mO5SUF0DEee1T5Yvy03wHg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_5NgRZF0DEee1T5Yvy03wHg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_5NgRZV0DEee1T5Yvy03wHg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_5NgRZl0DEee1T5Yvy03wHg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_5NgRYV0DEee1T5Yvy03wHg" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_5NgRY10DEee1T5Yvy03wHg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_5NgRYl0DEee1T5Yvy03wHg" points="[6, 4, -59, -34]$[69, 46, 4, 8]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_5NjUsF0DEee1T5Yvy03wHg" id="(0.775,0.8490566037735849)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>