Browse Source

Added base templating infrastructure for graphical elements

Andreas Mülder 12 years ago
parent
commit
723b91477b
16 changed files with 735 additions and 80 deletions
  1. 7 7
      plugins/org.yakindu.sct.ui.editor/.classpath
  2. 6 0
      plugins/org.yakindu.sct.ui.editor/.project
  3. 71 67
      plugins/org.yakindu.sct.ui.editor/META-INF/MANIFEST.MF
  4. 2 1
      plugins/org.yakindu.sct.ui.editor/build.properties
  5. 21 1
      plugins/org.yakindu.sct.ui.editor/plugin.xml
  6. 123 0
      plugins/org.yakindu.sct.ui.editor/schema/org.yakindu.sct.ui.editor.proposals.exsd
  7. 4 4
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/DiagramActivator.java
  8. 12 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/StatechartDiagramEditor.java
  9. 26 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddCompositeModification.java
  10. 25 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddOrthogonalModification.java
  11. 40 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddOutgoingStateModification.java
  12. 87 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/ContentProposalViewerKeyHandler.java
  13. 78 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/SCTContentProposalProvider.java
  14. 42 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/StateTemplatesModification.java
  15. 73 0
      plugins/org.yakindu.sct.ui.editor/templates/composite.sct
  16. 118 0
      plugins/org.yakindu.sct.ui.editor/templates/orthogonal.sct

+ 7 - 7
plugins/org.yakindu.sct.ui.editor/.classpath

@@ -1,7 +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/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?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/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 6 - 0
plugins/org.yakindu.sct.ui.editor/.project

@@ -5,6 +5,11 @@
 	<projects>
 	</projects>
 	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
 			<arguments>
@@ -24,5 +29,6 @@
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 	</natures>
 </projectDescription>

+ 71 - 67
plugins/org.yakindu.sct.ui.editor/META-INF/MANIFEST.MF

@@ -1,67 +1,71 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Yakindu SCT Editor
-Bundle-SymbolicName: org.yakindu.sct.ui.editor;singleton:=true
-Bundle-Version: 2.1.1.qualifier
-Bundle-Activator: org.yakindu.sct.ui.editor.DiagramActivator
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.jface,
- org.eclipse.ui.ide;visibility:=reexport,
- org.eclipse.ui.views,
- org.eclipse.ui.navigator,
- org.eclipse.ui.navigator.resources,
- org.eclipse.emf.ecore,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.emf.edit.ui,
- org.eclipse.gmf.runtime.emf.core,
- org.eclipse.gmf.runtime.emf.commands.core,
- org.eclipse.gmf.runtime.emf.ui.properties,
- org.eclipse.gmf.runtime.diagram.ui;visibility:=reexport,
- org.eclipse.gmf.runtime.diagram.ui.printing,
- org.eclipse.gmf.runtime.diagram.ui.printing.render,
- org.eclipse.gmf.runtime.diagram.ui.properties,
- org.eclipse.gmf.runtime.diagram.ui.providers,
- org.eclipse.gmf.runtime.diagram.ui.providers.ide,
- org.eclipse.gmf.runtime.diagram.ui.render,
- org.eclipse.gmf.runtime.diagram.ui.resources.editor;visibility:=reexport,
- org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide;visibility:=reexport,
- org.eclipse.draw2d;visibility:=reexport,
- org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport,
- org.eclipse.ui,
- com.google.inject,
- org.eclipse.xtext.ui,
- org.eclipse.xtext.ui.shared,
- de.itemis.xtext.utils.gmf,
- de.itemis.xtext.utils.jface,
- de.itemis.gmf.runtime.commons,
- org.eclipse.gmf.runtime.notation.providers,
- org.eclipse.help,
- org.eclipse.debug.ui,
- org.yakindu.sct.ui,
- org.yakindu.sct.model.sgraph,
- org.yakindu.sct.model.sgraph.edit,
- org.yakindu.sct.model.stext.resource,
- org.eclipse.xtext.builder,
- org.yakindu.sct.model.sgraph.ui,
- org.eclipse.gmf.runtime.emf.type.ui
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.yakindu.sct.ui.editor,
- org.yakindu.sct.ui.editor.commands,
- org.yakindu.sct.ui.editor.editor,
- org.yakindu.sct.ui.editor.editor.figures,
- org.yakindu.sct.ui.editor.editor.figures.utils,
- org.yakindu.sct.ui.editor.editparts,
- org.yakindu.sct.ui.editor.extensions,
- org.yakindu.sct.ui.editor.factories,
- org.yakindu.sct.ui.editor.partitioning,
- org.yakindu.sct.ui.editor.policies,
- org.yakindu.sct.ui.editor.preferences,
- org.yakindu.sct.ui.editor.propertysheets,
- org.yakindu.sct.ui.editor.providers,
- org.yakindu.sct.ui.editor.submachine,
- org.yakindu.sct.ui.editor.utils,
- org.yakindu.sct.ui.editor.validation,
- org.yakindu.sct.ui.editor.wizards
-Bundle-Vendor: yakindu.org
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Yakindu SCT Editor
+Bundle-SymbolicName: org.yakindu.sct.ui.editor;singleton:=true
+Bundle-Version: 2.1.1.qualifier
+Bundle-Activator: org.yakindu.sct.ui.editor.DiagramActivator
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.jface,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.ui.views,
+ org.eclipse.ui.navigator,
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.emf.edit.ui,
+ org.eclipse.gmf.runtime.emf.core,
+ org.eclipse.gmf.runtime.emf.commands.core,
+ org.eclipse.gmf.runtime.emf.ui.properties,
+ org.eclipse.gmf.runtime.diagram.ui;visibility:=reexport,
+ org.eclipse.gmf.runtime.diagram.ui.printing,
+ org.eclipse.gmf.runtime.diagram.ui.printing.render,
+ org.eclipse.gmf.runtime.diagram.ui.properties,
+ org.eclipse.gmf.runtime.diagram.ui.providers,
+ org.eclipse.gmf.runtime.diagram.ui.providers.ide,
+ org.eclipse.gmf.runtime.diagram.ui.render,
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor;visibility:=reexport,
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide;visibility:=reexport,
+ org.eclipse.draw2d;visibility:=reexport,
+ org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport,
+ org.eclipse.ui,
+ com.google.inject,
+ org.eclipse.xtext.ui,
+ org.eclipse.xtext.ui.shared,
+ de.itemis.xtext.utils.gmf,
+ de.itemis.xtext.utils.jface,
+ de.itemis.gmf.runtime.commons,
+ org.eclipse.gmf.runtime.notation.providers,
+ org.eclipse.help,
+ org.eclipse.debug.ui,
+ org.yakindu.sct.ui,
+ org.yakindu.sct.model.sgraph,
+ org.yakindu.sct.model.sgraph.edit,
+ org.yakindu.sct.model.stext.resource,
+ org.eclipse.xtext.builder,
+ org.yakindu.sct.model.sgraph.ui,
+ org.eclipse.gmf.runtime.emf.type.ui,
+ org.eclipse.xtend.lib,
+ com.google.guava,
+ org.eclipse.xtext.xbase.lib
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.yakindu.sct.ui.editor,
+ org.yakindu.sct.ui.editor.commands,
+ org.yakindu.sct.ui.editor.editor,
+ org.yakindu.sct.ui.editor.editor.figures,
+ org.yakindu.sct.ui.editor.editor.figures.utils,
+ org.yakindu.sct.ui.editor.editparts,
+ org.yakindu.sct.ui.editor.extensions,
+ org.yakindu.sct.ui.editor.factories,
+ org.yakindu.sct.ui.editor.partitioning,
+ org.yakindu.sct.ui.editor.policies,
+ org.yakindu.sct.ui.editor.preferences,
+ org.yakindu.sct.ui.editor.propertysheets,
+ org.yakindu.sct.ui.editor.providers,
+ org.yakindu.sct.ui.editor.submachine,
+ org.yakindu.sct.ui.editor.utils,
+ org.yakindu.sct.ui.editor.validation,
+ org.yakindu.sct.ui.editor.wizards
+Bundle-Vendor: yakindu.org
+

+ 2 - 1
plugins/org.yakindu.sct.ui.editor/build.properties

@@ -4,6 +4,7 @@ bin.includes = META-INF/,\
                .,\
                plugin.xml,\
                icons/,\
-               schema/
+               schema/,\
+               templates/
 src.includes = icons/,\
                schema/

+ 21 - 1
plugins/org.yakindu.sct.ui.editor/plugin.xml

@@ -4,6 +4,7 @@
 	<!-- Extension Points -->
 	
    <extension-point id="expressions" name="org.yakindu.sct.ui.editor.expressions" schema="schema/expressions.exsd"/>
+   <extension-point id="org.yakindu.sct.ui.editor.proposals" name="proposals" schema="schema/org.yakindu.sct.ui.editor.proposals.exsd"/>
   
     <!-- Editor -->
   
@@ -968,6 +969,25 @@
             nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation"
             priority="medium">
       </factory>
-   </extension>   
+   </extension>
+ <extension
+       point="org.yakindu.sct.ui.editor.proposals">
+       <ContentProposal
+             id="org.yakindu.sct.ui.editor.proposal.subregion"
+             label="Add Composite Behavior"
+             modification="org.yakindu.sct.ui.editor.editor.proposals.AddCompositeModification">
+       </ContentProposal>
+        <ContentProposal
+             id="org.yakindu.sct.ui.editor.proposal.subregion"
+             label="Add Orthogonal Behavior"
+             modification="org.yakindu.sct.ui.editor.editor.proposals.AddOrthogonalModification">
+       </ContentProposal>
+       <ContentProposal
+             description="Adds an outgoing state "
+             id="org.yakindu.sct.ui.editor.proposal.outgoingstate"
+             label="Add outgoing state"
+             modification="org.yakindu.sct.ui.editor.editor.proposals.AddOutgoingStateModification">
+       </ContentProposal>
+ </extension>   
    
 </plugin>

+ 123 - 0
plugins/org.yakindu.sct.ui.editor/schema/org.yakindu.sct.ui.editor.proposals.exsd

@@ -0,0 +1,123 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.yakindu.sct.ui.editor" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.yakindu.sct.ui.editor" id="org.yakindu.sct.ui.editor.proposals" name="proposals"/>
+      </appinfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="ContentProposal"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="ContentProposal">
+      <complexType>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="label" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="description" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="modification" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":de.itemis.xtext.utils.gmf.proposals.ISemanticModification"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>

+ 4 - 4
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/DiagramActivator.java

@@ -22,9 +22,10 @@ import org.osgi.framework.BundleContext;
 public class DiagramActivator extends AbstractUIPlugin {
 
 	public static final String PLUGIN_ID = "org.yakindu.sct.ui.editor";
+	// Our own content assist decorator (which adds the key binding)
+	public static String DEC_CONTENTASSIST = "org.eclipse.ui.examples.fieldassist.contentAssistDecoration";
 
-	public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(
-			PLUGIN_ID);
+	public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(PLUGIN_ID);
 
 	private static DiagramActivator plugin;
 
@@ -35,8 +36,7 @@ public class DiagramActivator extends AbstractUIPlugin {
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
-		PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT,
-				getPreferenceStore());
+		PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT, getPreferenceStore());
 	}
 
 	@Override

+ 12 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/StatechartDiagramEditor.java

@@ -36,6 +36,7 @@ import org.eclipse.ui.ide.IGotoMarker;
 import org.eclipse.xtext.ui.XtextProjectHelper;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.DiagramActivator;
+import org.yakindu.sct.ui.editor.editor.proposals.ContentProposalViewerKeyHandler;
 import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
 import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
@@ -153,6 +154,17 @@ public class StatechartDiagramEditor extends DiagramPartitioningEditor implement
 		super.createGraphicalViewer(parent);
 		IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();
 		helpSystem.setHelp(getGraphicalViewer().getControl(), HelpContextIds.SC_EDITOR_GRAPHICAL_VIEWER);
+
+	}
+
+	@Override
+	protected void configureGraphicalViewer() {
+		super.configureGraphicalViewer();
+		createContentProposalViewerKeyHandler();
+	}
+
+	protected void createContentProposalViewerKeyHandler() {
+		getGraphicalViewer().setKeyHandler(new ContentProposalViewerKeyHandler(getGraphicalViewer()));
 	}
 
 	@Override

+ 26 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddCompositeModification.java

@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2013 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.ui.editor.editor.proposals;
+
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class AddCompositeModification extends StateTemplatesModification {
+
+	@Override
+	public String getTemplatePath() {
+		return "org.yakindu.sct.ui.editor/templates/composite.sct";
+	}
+
+}

+ 25 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddOrthogonalModification.java

@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2013 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.ui.editor.editor.proposals;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class AddOrthogonalModification extends StateTemplatesModification {
+
+	@Override
+	public String getTemplatePath() {
+		return "org.yakindu.sct.ui.editor/templates/orthogonal.sct";
+	}
+
+}

+ 40 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/AddOutgoingStateModification.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2013 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.ui.editor.editor.proposals;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.sct.model.sgraph.SGraphFactory;
+import org.yakindu.sct.model.sgraph.State;
+import org.yakindu.sct.model.sgraph.Transition;
+
+import de.itemis.xtext.utils.gmf.proposals.AbstractSemanticModification;
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class AddOutgoingStateModification extends AbstractSemanticModification {
+
+	public boolean IsModificationFor(EObject object) {
+		return object instanceof State;
+	}
+
+	@Override
+	protected void internalExecute(EObject semanticElement, View view) {
+		State state = (State) semanticElement;
+		State newState = SGraphFactory.eINSTANCE.createState();
+		Transition transition = SGraphFactory.eINSTANCE.createTransition();
+		state.getParentRegion().getVertices().add(newState);
+		transition.setSource(state);
+		transition.setTarget(newState);
+	}
+}

+ 87 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/ContentProposalViewerKeyHandler.java

@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2013 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.ui.editor.editor.proposals;
+
+import java.util.List;
+
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.internal.parts.DiagramGraphicalViewerKeyHandler;
+import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+
+import de.itemis.xtext.utils.gmf.proposals.AbstractSemanticContentProposalProvider;
+import de.itemis.xtext.utils.gmf.proposals.SemanticContentControlAdapter;
+import de.itemis.xtext.utils.gmf.proposals.SemanticContentProposalLabelProvider;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@SuppressWarnings("restriction")
+public class ContentProposalViewerKeyHandler extends DiagramGraphicalViewerKeyHandler {
+
+	private AbstractSemanticContentProposalProvider proposalProvider;
+
+	private ContentProposalAdapter adapter;
+
+	protected static final KeyStroke keyStroke = KeyStroke.getInstance(SWT.MOD1, SWT.SPACE);
+
+	public ContentProposalViewerKeyHandler(GraphicalViewer viewer) {
+		super(viewer);
+		createProposalProvider();
+		createContentAdpater();
+	}
+
+	protected void createContentAdpater() {
+		SemanticContentControlAdapter controlAdapter = new SemanticContentControlAdapter(proposalProvider, getViewer());
+		adapter = new ContentProposalAdapter((Composite) getViewer().getControl(), controlAdapter, proposalProvider,
+				keyStroke, null);
+		adapter.setLabelProvider(new SemanticContentProposalLabelProvider());
+		adapter.setPropagateKeys(true);
+		// TODO: If not set, the adapter uses the full width of the
+		// GraphicalViewer as initial bounds
+		adapter.setPopupSize(new Point(400, 150));
+	}
+
+	protected void createProposalProvider() {
+		proposalProvider = new SCTContentProposalProvider(getViewer());
+	}
+
+	@Override
+	public boolean keyPressed(KeyEvent e) {
+		if (getCurrentSelection() == null)
+			return super.keyPressed(e);
+		if ((e.character == ' ') && ((e.stateMask & SWT.CTRL) != 0)) {
+			// Do not execute super - the default ctrl key binding is a
+			// deselection of the current selected element for whatever
+			// reason
+			return true;
+		}
+		return super.keyPressed(e);
+	}
+
+	@SuppressWarnings("unchecked")
+	protected IGraphicalEditPart getCurrentSelection() {
+		List<IGraphicalEditPart> selectedEditParts = getViewer().getSelectedEditParts();
+		if (selectedEditParts.size() == 1) {
+			IGraphicalEditPart editPart = (IGraphicalEditPart) selectedEditParts.get(0);
+			return editPart;
+		}
+		return null;
+
+	}
+}

+ 78 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/SCTContentProposalProvider.java

@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2013 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.ui.editor.editor.proposals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gef.GraphicalViewer;
+import org.yakindu.sct.ui.editor.StatechartImages;
+
+import de.itemis.xtext.utils.gmf.proposals.AbstractSemanticContentProposalProvider;
+import de.itemis.xtext.utils.gmf.proposals.ISemanticContentProposal;
+import de.itemis.xtext.utils.gmf.proposals.ISemanticModification;
+import de.itemis.xtext.utils.gmf.proposals.SemanticContentProposal;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SCTContentProposalProvider extends AbstractSemanticContentProposalProvider {
+
+	private static final String PROPOSAL_EXTENSION = "org.yakindu.sct.ui.editor.proposals";
+
+	private static final String ID = "id";
+
+	private static final String LABEL = "label";
+
+	private static final String DESCRIPTION = "description";
+
+	private static final String MODIFICATION = "modification";
+
+	public SCTContentProposalProvider(GraphicalViewer viewer) {
+		super(viewer);
+	}
+
+	@Override
+	public void createProposals(IProposalAcceptor acceptor) {
+		List<ISemanticContentProposal> registeredProposals;
+		try {
+			registeredProposals = getRegisteredProposals();
+			for (ISemanticContentProposal proposal : registeredProposals) {
+				acceptor.accept(proposal);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public List<ISemanticContentProposal> getRegisteredProposals() throws Exception {
+		List<ISemanticContentProposal> result = new ArrayList<ISemanticContentProposal>();
+		IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor(
+				PROPOSAL_EXTENSION);
+		for (IConfigurationElement configurationElement : configurationElements) {
+			String id = configurationElement.getAttribute(ID);
+			String label = configurationElement.getAttribute(LABEL);
+			String description = configurationElement.getAttribute(DESCRIPTION);
+			ISemanticModification modification = (ISemanticModification) configurationElement
+					.createExecutableExtension(MODIFICATION);
+			// TODO: Move image to extension point
+			SemanticContentProposal proposal = new SemanticContentProposal(id, label, description,
+					StatechartImages.SUB_STATECHART_PICTOGRAM.image(), modification);
+			result.add(proposal);
+		}
+		return result;
+	}
+
+}

+ 42 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editor/proposals/StateTemplatesModification.java

@@ -0,0 +1,42 @@
+package org.yakindu.sct.ui.editor.editor.proposals;
+
+import static org.eclipse.emf.ecore.util.EcoreUtil.getObjectByType;
+import static org.yakindu.sct.model.sgraph.SGraphPackage.Literals.STATECHART;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.yakindu.sct.model.sgraph.State;
+import org.yakindu.sct.model.sgraph.Statechart;
+
+import de.itemis.xtext.utils.gmf.proposals.AbstractSemanticModification;
+
+public abstract class StateTemplatesModification extends AbstractSemanticModification {
+
+	public abstract String getTemplatePath();
+
+	public boolean IsModificationFor(EObject object) {
+		return object instanceof State;
+	}
+
+	@Override
+	protected void internalExecute(EObject semanticObject, View view) {
+		State state = (State) semanticObject;
+		Resource resource = loadTemplateResource(getTemplatePath());
+		// Semantic changes
+		Statechart statechart = (Statechart) getObjectByType(resource.getContents(), STATECHART);
+		state.getRegions().addAll(statechart.getRegions());
+		// Notation changes
+		// TODO: Implement me
+		resource.unload();
+
+	}
+
+	protected Resource loadTemplateResource(String templatePath) {
+		ResourceSet set = new ResourceSetImpl();
+		return set.getResource(URI.createPlatformPluginURI(getTemplatePath(), true), true);
+	}
+}

+ 73 - 0
plugins/org.yakindu.sct.ui.editor/templates/composite.sct

@@ -0,0 +1,73 @@
+<?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="_borvkPR7EeKYZsO6tCRi-g" name="default">
+    <regions xmi:id="_bpPwQPR7EeKYZsO6tCRi-g" name="">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_H4ZhUPSOEeKTtv0EBPAdFQ">
+        <outgoingTransitions xmi:id="_KMlxgPSOEeKTtv0EBPAdFQ" specification="" target="_IZk7wPSOEeKTtv0EBPAdFQ"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_IZk7wPSOEeKTtv0EBPAdFQ" name="State1" incomingTransitions="_KMlxgPSOEeKTtv0EBPAdFQ"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_bpOiIPR7EeKYZsO6tCRi-g" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_borvkPR7EeKYZsO6tCRi-g" measurementUnit="Pixel">
+    <children xmi:id="_bpTaoPR7EeKYZsO6tCRi-g" type="Region" element="_bpPwQPR7EeKYZsO6tCRi-g">
+      <children xsi:type="notation:DecorationNode" xmi:id="_bpirMPR7EeKYZsO6tCRi-g" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_bpirMfR7EeKYZsO6tCRi-g"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_bpirMvR7EeKYZsO6tCRi-g"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_bpjSQPR7EeKYZsO6tCRi-g" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_H4dLsPSOEeKTtv0EBPAdFQ" type="Entry" element="_H4ZhUPSOEeKTtv0EBPAdFQ">
+          <children xmi:id="_H4eZ0PSOEeKTtv0EBPAdFQ" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_H4fA4PSOEeKTtv0EBPAdFQ" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_H4fA4fSOEeKTtv0EBPAdFQ"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_H4fA4vSOEeKTtv0EBPAdFQ"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_H4eZ0fSOEeKTtv0EBPAdFQ" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_H4eZ0vSOEeKTtv0EBPAdFQ"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_H4dLsfSOEeKTtv0EBPAdFQ" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_H4dLsvSOEeKTtv0EBPAdFQ" x="39" y="12"/>
+        </children>
+        <children xmi:id="_IZnYAPSOEeKTtv0EBPAdFQ" type="State" element="_IZk7wPSOEeKTtv0EBPAdFQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_IZomIPSOEeKTtv0EBPAdFQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_IZomIfSOEeKTtv0EBPAdFQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_IZomIvSOEeKTtv0EBPAdFQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_IZomI_SOEeKTtv0EBPAdFQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_IZpNMPSOEeKTtv0EBPAdFQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IZpNMfSOEeKTtv0EBPAdFQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_IZp0QPSOEeKTtv0EBPAdFQ" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_IZnYAfSOEeKTtv0EBPAdFQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_IZnYAvSOEeKTtv0EBPAdFQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_IZp0QfSOEeKTtv0EBPAdFQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IZnYA_SOEeKTtv0EBPAdFQ" x="94" y="67"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpjSQfR7EeKYZsO6tCRi-g"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_bpTaofR7EeKYZsO6tCRi-g" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpj5UPR7EeKYZsO6tCRi-g" x="90" y="10" width="178" height="159"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_bpwGk_R7EeKYZsO6tCRi-g" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_bpwtoPR7EeKYZsO6tCRi-g" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_bpwtofR7EeKYZsO6tCRi-g"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_bpwtovR7EeKYZsO6tCRi-g"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_bpwto_R7EeKYZsO6tCRi-g" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpwtpPR7EeKYZsO6tCRi-g"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_bpwtpfR7EeKYZsO6tCRi-g" x="10" y="10" width="57" height="30"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_bpOiIfR7EeKYZsO6tCRi-g"/>
+    <edges xmi:id="_KMo00PSOEeKTtv0EBPAdFQ" type="Transition" element="_KMlxgPSOEeKTtv0EBPAdFQ" source="_H4dLsPSOEeKTtv0EBPAdFQ" target="_IZnYAPSOEeKTtv0EBPAdFQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KMqC8PSOEeKTtv0EBPAdFQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KMqC8fSOEeKTtv0EBPAdFQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KMqC8vSOEeKTtv0EBPAdFQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_KMo00fSOEeKTtv0EBPAdFQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_KMpb4PSOEeKTtv0EBPAdFQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_KMo00vSOEeKTtv0EBPAdFQ" points="[7, 2, -94, -35]$[103, 30, 2, -7]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_KMvigPSOEeKTtv0EBPAdFQ" id="(0.32,0.1509433962264151)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 118 - 0
plugins/org.yakindu.sct.ui.editor/templates/orthogonal.sct

@@ -0,0 +1,118 @@
+<?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="_INrYUPSPEeKTtv0EBPAdFQ" name="orthogonal">
+    <regions xmi:id="_INsmcvSPEeKTtv0EBPAdFQ" name="region 1">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_INtNhvSPEeKTtv0EBPAdFQ">
+        <outgoingTransitions xmi:id="_GaGagPSSEeK5sJoUc69J5Q" specification="" target="_FyMtAPSSEeK5sJoUc69J5Q"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_FyMtAPSSEeK5sJoUc69J5Q" name="State 1" incomingTransitions="_GaGagPSSEeK5sJoUc69J5Q"/>
+    </regions>
+    <regions xmi:id="_DKlxkPSSEeK5sJoUc69J5Q" name="region 2">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_RMnh4PSSEeK5sJoUc69J5Q">
+        <outgoingTransitions xmi:id="_RMnh4fSSEeK5sJoUc69J5Q" specification="" target="_RMnh4vSSEeK5sJoUc69J5Q"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_RMnh4vSSEeK5sJoUc69J5Q" name="State 2" incomingTransitions="_RMnh4fSSEeK5sJoUc69J5Q"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_INsmcPSPEeKTtv0EBPAdFQ" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_INrYUPSPEeKTtv0EBPAdFQ" measurementUnit="Pixel">
+    <children xmi:id="_INsmc_SPEeKTtv0EBPAdFQ" type="Region" element="_INsmcvSPEeKTtv0EBPAdFQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_INtNgPSPEeKTtv0EBPAdFQ" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_INtNgfSPEeKTtv0EBPAdFQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_INtNgvSPEeKTtv0EBPAdFQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_INtNg_SPEeKTtv0EBPAdFQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_INtNh_SPEeKTtv0EBPAdFQ" type="Entry" element="_INtNhvSPEeKTtv0EBPAdFQ">
+          <children xmi:id="_INt0kPSPEeKTtv0EBPAdFQ" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_INt0k_SPEeKTtv0EBPAdFQ" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_INt0lPSPEeKTtv0EBPAdFQ"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_INt0lfSPEeKTtv0EBPAdFQ"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_INt0kfSPEeKTtv0EBPAdFQ" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INt0kvSPEeKTtv0EBPAdFQ"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_INtNiPSPEeKTtv0EBPAdFQ" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INt0lvSPEeKTtv0EBPAdFQ" x="84" y="2" width="15" height="15"/>
+        </children>
+        <children xmi:id="_FyPwUPSSEeK5sJoUc69J5Q" type="State" element="_FyMtAPSSEeK5sJoUc69J5Q">
+          <children xsi:type="notation:DecorationNode" xmi:id="_FyQXYPSSEeK5sJoUc69J5Q" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_FyQXYfSSEeK5sJoUc69J5Q"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_FyQ-cPSSEeK5sJoUc69J5Q"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_FyQ-cfSSEeK5sJoUc69J5Q" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_FyQ-cvSSEeK5sJoUc69J5Q" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_FyRlgPSSEeK5sJoUc69J5Q"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_FySMkPSSEeK5sJoUc69J5Q" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_FyPwUfSSEeK5sJoUc69J5Q" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_FyPwUvSSEeK5sJoUc69J5Q"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_FySMkfSSEeK5sJoUc69J5Q" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_FyPwU_SSEeK5sJoUc69J5Q" x="64" y="102"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INtNhPSPEeKTtv0EBPAdFQ"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_INsmdPSPEeKTtv0EBPAdFQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INtNhfSPEeKTtv0EBPAdFQ" x="220" y="20" width="176" height="211"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_INvpx_SPEeKTtv0EBPAdFQ" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_INwQ0PSPEeKTtv0EBPAdFQ" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_INwQ0fSPEeKTtv0EBPAdFQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_INwQ0vSPEeKTtv0EBPAdFQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_INwQ0_SPEeKTtv0EBPAdFQ" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INwQ1PSPEeKTtv0EBPAdFQ"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_INwQ1fSPEeKTtv0EBPAdFQ" x="315" y="250" width="171" height="31"/>
+    </children>
+    <children xmi:id="_DKo04PSSEeK5sJoUc69J5Q" type="Region" element="_DKlxkPSSEeK5sJoUc69J5Q">
+      <children xsi:type="notation:DecorationNode" xmi:id="_DKqDAPSSEeK5sJoUc69J5Q" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_DKqDAfSSEeK5sJoUc69J5Q"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_DKqDAvSSEeK5sJoUc69J5Q"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_DKqqEPSSEeK5sJoUc69J5Q" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_RMlFoPSSEeK5sJoUc69J5Q" type="Entry" element="_RMnh4PSSEeK5sJoUc69J5Q">
+          <children xmi:id="_RMlFofSSEeK5sJoUc69J5Q" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_RMlFovSSEeK5sJoUc69J5Q" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_RMlFo_SSEeK5sJoUc69J5Q"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_RMlFpPSSEeK5sJoUc69J5Q"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_RMlFpfSSEeK5sJoUc69J5Q" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_RMlFpvSSEeK5sJoUc69J5Q"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_RMlFp_SSEeK5sJoUc69J5Q" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_RMlFqPSSEeK5sJoUc69J5Q" x="94" y="12" width="15" height="15"/>
+        </children>
+        <children xmi:id="_RMmTwPSSEeK5sJoUc69J5Q" type="State" element="_RMnh4vSSEeK5sJoUc69J5Q">
+          <children xsi:type="notation:DecorationNode" xmi:id="_RMmTwfSSEeK5sJoUc69J5Q" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_RMmTwvSSEeK5sJoUc69J5Q"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_RMmTw_SSEeK5sJoUc69J5Q"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_RMmTxPSSEeK5sJoUc69J5Q" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_RMmTxfSSEeK5sJoUc69J5Q" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_RMmTxvSSEeK5sJoUc69J5Q"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_RMmTx_SSEeK5sJoUc69J5Q" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_RMmTyPSSEeK5sJoUc69J5Q" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_RMmTyfSSEeK5sJoUc69J5Q"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_RMmTyvSSEeK5sJoUc69J5Q" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_RMmTy_SSEeK5sJoUc69J5Q" x="71" y="102"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_DKqqEfSSEeK5sJoUc69J5Q"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_DKo04fSSEeK5sJoUc69J5Q" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_DKo04vSSEeK5sJoUc69J5Q" x="410" y="20" width="196" height="211"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_INsmcfSPEeKTtv0EBPAdFQ"/>
+    <edges xmi:id="_GaKE4PSSEeK5sJoUc69J5Q" type="Transition" element="_GaGagPSSEeK5sJoUc69J5Q" source="_INtNh_SPEeKTtv0EBPAdFQ" target="_FyPwUPSSEeK5sJoUc69J5Q">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GaKr8PSSEeK5sJoUc69J5Q" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GaKr8fSSEeK5sJoUc69J5Q"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GaKr8vSSEeK5sJoUc69J5Q" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_GaKE4fSSEeK5sJoUc69J5Q" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_GaKE4_SSEeK5sJoUc69J5Q" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_GaKE4vSSEeK5sJoUc69J5Q" points="[0, 7, 2, -64]$[1, 64, 3, -7]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_GaQLgPSSEeK5sJoUc69J5Q" id="(0.5733333333333334,0.1509433962264151)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>