Merge "Add TextStyle support to AbstractText in the metamodel"
diff --git a/plugins/org.eclipse.graphiti.mm/.settings/.api_filters b/plugins/org.eclipse.graphiti.mm/.settings/.api_filters
new file mode 100644
index 0000000..83a571e
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/.settings/.api_filters
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<component id="org.eclipse.graphiti.mm" version="2">

+    <resource path="src-gen/org/eclipse/graphiti/mm/algorithms/AlgorithmsPackage.java" type="org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage">

+        <filter comment="New features added, so this generated value changes" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage"/>

+                <message_argument value="ABSTRACT_TEXT_FEATURE_COUNT"/>

+                <message_argument value="22"/>

+            </message_arguments>

+        </filter>

+        <filter comment="New features added, so this generated value changes" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage"/>

+                <message_argument value="MULTI_TEXT_FEATURE_COUNT"/>

+                <message_argument value="22"/>

+            </message_arguments>

+        </filter>

+        <filter comment="New features added, so this generated value changes" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage"/>

+                <message_argument value="TEXT_FEATURE_COUNT"/>

+                <message_argument value="22"/>

+            </message_arguments>

+        </filter>

+    </resource>

+    <resource path="src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesPackage.java" type="org.eclipse.graphiti.mm.algorithms.styles.StylesPackage">

+        <filter comment="The generated value of this contact has changed" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.styles.StylesPackage"/>

+                <message_argument value="LINE_STYLE"/>

+                <message_argument value="11"/>

+            </message_arguments>

+        </filter>

+        <filter comment="The generated value of this contact has changed" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.styles.StylesPackage"/>

+                <message_argument value="LOCATION_TYPE"/>

+                <message_argument value="13"/>

+            </message_arguments>

+        </filter>

+        <filter comment="The generated value of this contact has changed" id="388194388">

+            <message_arguments>

+                <message_argument value="org.eclipse.graphiti.mm.algorithms.styles.StylesPackage"/>

+                <message_argument value="ORIENTATION"/>

+                <message_argument value="12"/>

+            </message_arguments>

+        </filter>

+    </resource>

+</component>

diff --git a/plugins/org.eclipse.graphiti.mm/model/graphiti.ecore b/plugins/org.eclipse.graphiti.mm/model/graphiti.ecore
index e866a66..ba9296f 100644
--- a/plugins/org.eclipse.graphiti.mm/model/graphiti.ecore
+++ b/plugins/org.eclipse.graphiti.mm/model/graphiti.ecore
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>

-<ecore:EPackage xmi:version="2.0"

-    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mm"

-    nsURI="http://eclipse.org/graphiti/mm" nsPrefix="mm">

+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mm" nsURI="http://eclipse.org/graphiti/mm" nsPrefix="mm">

   <eClassifiers xsi:type="ecore:EClass" name="Property">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

@@ -205,6 +203,8 @@
           defaultValueLiteral="0"/>

       <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

           unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

+      <eStructuralFeatures xsi:type="ecore:EReference" name="styleRegions" upperBound="-1"

+          eType="#//algorithms/styles/TextStyleRegion" containment="true"/>

     </eClassifiers>

     <eClassifiers xsi:type="ecore:EClass" name="MultiText" eSuperTypes="#//algorithms/AbstractText"/>

     <eSubpackages name="styles" nsURI="http://eclipse.org/graphiti/mm/algorithms/styles"

@@ -231,6 +231,12 @@
         <eLiterals name="LOCATION_TYPE_ABSOLUTE_START" value="2"/>

         <eLiterals name="LOCATION_TYPE_ABSOLUTE_END" value="3"/>

       </eClassifiers>

+      <eClassifiers xsi:type="ecore:EEnum" name="UnderlineStyle">

+        <eLiterals name="UNDERLINE_SINGLE"/>

+        <eLiterals name="UNDERLINE_DOUBLE" value="1"/>

+        <eLiterals name="UNDERLINE_ERROR" value="2"/>

+        <eLiterals name="UNDERLINE_SQUIGGLE" value="3"/>

+      </eClassifiers>

       <eClassifiers xsi:type="ecore:EClass" name="RenderingStyle">

         <eStructuralFeatures xsi:type="ecore:EReference" name="adaptedGradientColoredAreas"

             eType="#//algorithms/styles/AdaptedGradientColoredAreas" containment="true"/>

@@ -360,6 +366,22 @@
         <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>

         <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>

       </eClassifiers>

+      <eClassifiers xsi:type="ecore:EClass" name="TextStyle">

+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="underline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlineStyle" eType="#//algorithms/styles/UnderlineStyle"/>

+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="strikeout" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="font" eType="#//algorithms/styles/Font"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="foreground" eType="#//algorithms/styles/Color"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="background" eType="#//algorithms/styles/Color"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="underlineColor" eType="#//algorithms/styles/Color"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="strikeoutColor" eType="#//algorithms/styles/Color"/>

+      </eClassifiers>

+      <eClassifiers xsi:type="ecore:EClass" name="TextStyleRegion">

+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="start" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

+        <eStructuralFeatures xsi:type="ecore:EAttribute" name="end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

+        <eStructuralFeatures xsi:type="ecore:EReference" name="style" eType="#//algorithms/styles/TextStyle"

+            containment="true"/>

+      </eClassifiers>

     </eSubpackages>

   </eSubpackages>

 </ecore:EPackage>

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AbstractText.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AbstractText.java
index a33b352..2baf4ec 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AbstractText.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AbstractText.java
@@ -14,8 +14,10 @@
  */
 package org.eclipse.graphiti.mm.algorithms;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.graphiti.mm.algorithms.styles.Font;
 import org.eclipse.graphiti.mm.algorithms.styles.Orientation;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,12 +32,15 @@
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.AbstractText#getVerticalAlignment <em>Vertical Alignment</em>}</li>
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.AbstractText#getAngle <em>Angle</em>}</li>
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.AbstractText#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.AbstractText#getStyleRegions <em>Style Regions</em>}</li>
  * </ul>
  * </p>
  *
  * @see org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage#getAbstractText()
  * @model abstract="true"
  * @generated
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface AbstractText extends GraphicsAlgorithm {
 	/**
@@ -177,4 +182,21 @@
 	 */
 	void setValue(String value);
 
+	/**
+	 * Returns the value of the '<em><b>Style Regions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Style Regions</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * @since 0.10
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Style Regions</em>' containment reference list.
+	 * @see org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage#getAbstractText_StyleRegions()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	EList<TextStyleRegion> getStyleRegions();
+
 } // AbstractText
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AlgorithmsPackage.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AlgorithmsPackage.java
index 636295d..1ba04d9 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AlgorithmsPackage.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/AlgorithmsPackage.java
@@ -18,7 +18,6 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
-
 import org.eclipse.graphiti.mm.MmPackage;
 
 /**
@@ -26,11 +25,14 @@
  * The <b>Package</b> for the model.
  * It contains accessors for the meta objects to represent
  * <ul>
- *   <li>each class,</li>
- *   <li>each feature of each class,</li>
- *   <li>each enum,</li>
- *   <li>and each data type</li>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
  * </ul>
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
  * <!-- end-user-doc -->
  * @see org.eclipse.graphiti.mm.algorithms.AlgorithmsFactory
  * @model kind="package"
@@ -803,13 +805,23 @@
 	int ABSTRACT_TEXT__VALUE = GRAPHICS_ALGORITHM_FEATURE_COUNT + 4;
 
 	/**
+	 * The feature id for the '<em><b>Style Regions</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 * @since 0.10
+	 */
+	int ABSTRACT_TEXT__STYLE_REGIONS = GRAPHICS_ALGORITHM_FEATURE_COUNT + 5;
+
+	/**
 	 * The number of structural features of the '<em>Abstract Text</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ABSTRACT_TEXT_FEATURE_COUNT = GRAPHICS_ALGORITHM_FEATURE_COUNT + 5;
+	int ABSTRACT_TEXT_FEATURE_COUNT = GRAPHICS_ALGORITHM_FEATURE_COUNT + 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.impl.TextImpl <em>Text</em>}' class.
@@ -1020,6 +1032,16 @@
 	int TEXT__VALUE = ABSTRACT_TEXT__VALUE;
 
 	/**
+	 * The feature id for the '<em><b>Style Regions</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 * @since 0.10
+	 */
+	int TEXT__STYLE_REGIONS = ABSTRACT_TEXT__STYLE_REGIONS;
+
+	/**
 	 * The number of structural features of the '<em>Text</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2169,6 +2191,16 @@
 	int MULTI_TEXT__VALUE = ABSTRACT_TEXT__VALUE;
 
 	/**
+	 * The feature id for the '<em><b>Style Regions</b></em>' containment
+	 * reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 * @ordered
+	 * @since 0.10
+	 */
+	int MULTI_TEXT__STYLE_REGIONS = ABSTRACT_TEXT__STYLE_REGIONS;
+
+	/**
 	 * The number of structural features of the '<em>Multi Text</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2510,6 +2542,20 @@
 	EAttribute getAbstractText_Value();
 
 	/**
+	 * Returns the meta object for the containment reference list '
+	 * {@link org.eclipse.graphiti.mm.algorithms.AbstractText#getStyleRegions
+	 * <em>Style Regions</em>}'. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @return the meta object for the containment reference list '
+	 *         <em>Style Regions</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.AbstractText#getStyleRegions()
+	 * @see #getAbstractText()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getAbstractText_StyleRegions();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.graphiti.mm.algorithms.MultiText <em>Multi Text</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2529,15 +2575,18 @@
 	AlgorithmsFactory getAlgorithmsFactory();
 
 	/**
-	 * <!-- begin-user-doc -->
-	 * Defines literals for the meta objects that represent
+	 * <!-- begin-user-doc --> Defines literals for the meta objects that
+	 * represent
 	 * <ul>
-	 *   <li>each class,</li>
-	 *   <li>each feature of each class,</li>
-	 *   <li>each enum,</li>
-	 *   <li>and each data type</li>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
 	 * </ul>
-	 * <!-- end-user-doc -->
+	 * 
+	 * @noextend This interface is not intended to be extended by clients.
+	 * @noimplement This interface is not intended to be implemented by clients.
+	 *              <!-- end-user-doc -->
 	 * @generated
 	 */
 	interface Literals {
@@ -2810,6 +2859,16 @@
 		EAttribute ABSTRACT_TEXT__VALUE = eINSTANCE.getAbstractText_Value();
 
 		/**
+		 * The meta object literal for the '<em><b>Style Regions</b></em>'
+		 * containment reference list feature. <!-- begin-user-doc --> <!--
+		 * end-user-doc -->
+		 * 
+		 * @generated
+		 * @since 0.10
+		 */
+		EReference ABSTRACT_TEXT__STYLE_REGIONS = eINSTANCE.getAbstractText_StyleRegions();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.graphiti.mm.algorithms.impl.MultiTextImpl <em>Multi Text</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AbstractTextImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AbstractTextImpl.java
index 145bd32..9c5cf0a 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AbstractTextImpl.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AbstractTextImpl.java
@@ -14,14 +14,21 @@
  */
 package org.eclipse.graphiti.mm.algorithms.impl;
 
+import java.util.Collection;
+
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.graphiti.mm.algorithms.AbstractText;
 import org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage;
 import org.eclipse.graphiti.mm.algorithms.styles.Font;
 import org.eclipse.graphiti.mm.algorithms.styles.Orientation;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
 
 /**
  * <!-- begin-user-doc -->
@@ -35,6 +42,7 @@
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.impl.AbstractTextImpl#getVerticalAlignment <em>Vertical Alignment</em>}</li>
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.impl.AbstractTextImpl#getAngle <em>Angle</em>}</li>
  *   <li>{@link org.eclipse.graphiti.mm.algorithms.impl.AbstractTextImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.impl.AbstractTextImpl#getStyleRegions <em>Style Regions</em>}</li>
  * </ul>
  * </p>
  *
@@ -132,6 +140,16 @@
 	protected String value = VALUE_EDEFAULT;
 
 	/**
+	 * The cached value of the '{@link #getStyleRegions() <em>Style Regions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStyleRegions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TextStyleRegion> styleRegions;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -277,6 +295,32 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EList<TextStyleRegion> getStyleRegions() {
+		if (styleRegions == null) {
+			styleRegions = new EObjectContainmentEList.Resolving<TextStyleRegion>(TextStyleRegion.class, this, AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS);
+		}
+		return styleRegions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS:
+				return ((InternalEList<?>)getStyleRegions()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
@@ -291,6 +335,8 @@
 				return getAngle();
 			case AlgorithmsPackage.ABSTRACT_TEXT__VALUE:
 				return getValue();
+			case AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS:
+				return getStyleRegions();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -300,6 +346,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -318,6 +365,10 @@
 			case AlgorithmsPackage.ABSTRACT_TEXT__VALUE:
 				setValue((String)newValue);
 				return;
+			case AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS:
+				getStyleRegions().clear();
+				getStyleRegions().addAll((Collection<? extends TextStyleRegion>)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -345,6 +396,9 @@
 			case AlgorithmsPackage.ABSTRACT_TEXT__VALUE:
 				setValue(VALUE_EDEFAULT);
 				return;
+			case AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS:
+				getStyleRegions().clear();
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -367,6 +421,8 @@
 				return ANGLE_EDEFAULT == null ? angle != null : !ANGLE_EDEFAULT.equals(angle);
 			case AlgorithmsPackage.ABSTRACT_TEXT__VALUE:
 				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case AlgorithmsPackage.ABSTRACT_TEXT__STYLE_REGIONS:
+				return styleRegions != null && !styleRegions.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AlgorithmsPackageImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AlgorithmsPackageImpl.java
index a3fbe8b..7183485 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AlgorithmsPackageImpl.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/impl/AlgorithmsPackageImpl.java
@@ -18,11 +18,8 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
-
 import org.eclipse.emf.ecore.impl.EPackageImpl;
-
 import org.eclipse.graphiti.mm.MmPackage;
-
 import org.eclipse.graphiti.mm.algorithms.AbstractText;
 import org.eclipse.graphiti.mm.algorithms.AlgorithmsFactory;
 import org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage;
@@ -36,15 +33,10 @@
 import org.eclipse.graphiti.mm.algorithms.Rectangle;
 import org.eclipse.graphiti.mm.algorithms.RoundedRectangle;
 import org.eclipse.graphiti.mm.algorithms.Text;
-
 import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;
-
 import org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl;
-
 import org.eclipse.graphiti.mm.impl.MmPackageImpl;
-
 import org.eclipse.graphiti.mm.pictograms.PictogramsPackage;
-
 import org.eclipse.graphiti.mm.pictograms.impl.PictogramsPackageImpl;
 
 /**
@@ -487,6 +479,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getAbstractText_StyleRegions() {
+		return (EReference)abstractTextEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getMultiText() {
 		return multiTextEClass;
 	}
@@ -559,6 +560,7 @@
 		createEAttribute(abstractTextEClass, ABSTRACT_TEXT__VERTICAL_ALIGNMENT);
 		createEAttribute(abstractTextEClass, ABSTRACT_TEXT__ANGLE);
 		createEAttribute(abstractTextEClass, ABSTRACT_TEXT__VALUE);
+		createEReference(abstractTextEClass, ABSTRACT_TEXT__STYLE_REGIONS);
 
 		multiTextEClass = createEClass(MULTI_TEXT);
 	}
@@ -653,6 +655,7 @@
 		initEAttribute(getAbstractText_VerticalAlignment(), theStylesPackage.getOrientation(), "verticalAlignment", "ALIGNMENT_CENTER", 0, 1, AbstractText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getAbstractText_Angle(), ecorePackage.getEIntegerObject(), "angle", "0", 0, 1, AbstractText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getAbstractText_Value(), ecorePackage.getEString(), "value", null, 1, 1, AbstractText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAbstractText_StyleRegions(), theStylesPackage.getTextStyleRegion(), null, "styleRegions", null, 0, -1, AbstractText.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(multiTextEClass, MultiText.class, "MultiText", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 	}
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesFactory.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesFactory.java
index 96696b5..4650fb3 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesFactory.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesFactory.java
@@ -20,6 +20,8 @@
  * <!-- begin-user-doc -->
  * The <b>Factory</b> for the model.
  * It provides a create method for each non-abstract class of the model.
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
  * <!-- end-user-doc -->
  * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage
  * @generated
@@ -125,6 +127,26 @@
 	PrecisionPoint createPrecisionPoint();
 
 	/**
+	 * Returns a new object of class '<em>Text Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Text Style</em>'.
+	 * @generated
+	 * @since 0.10
+	 */
+	TextStyle createTextStyle();
+
+	/**
+	 * Returns a new object of class '<em>Text Style Region</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Text Style Region</em>'.
+	 * @generated
+	 * @since 0.10
+	 */
+	TextStyleRegion createTextStyleRegion();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesPackage.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesPackage.java
index 680682f..9297175 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesPackage.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/StylesPackage.java
@@ -34,6 +34,8 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.graphiti.mm.algorithms.styles.StylesFactory
  * @model kind="package"
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
  * @generated
  */
 public interface StylesPackage extends EPackage {
@@ -744,6 +746,158 @@
 	int PRECISION_POINT_FEATURE_COUNT = 2;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl <em>Text Style</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getTextStyle()
+	 * @since 0.10
+	 * @generated
+	 */
+	int TEXT_STYLE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Underline</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 * @since 0.10
+	 */
+	int TEXT_STYLE__UNDERLINE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Underline Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__UNDERLINE_STYLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Strikeout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__STRIKEOUT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Font</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__FONT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Foreground</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__FOREGROUND = 4;
+
+	/**
+	 * The feature id for the '<em><b>Background</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__BACKGROUND = 5;
+
+	/**
+	 * The feature id for the '<em><b>Underline Color</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__UNDERLINE_COLOR = 6;
+
+	/**
+	 * The feature id for the '<em><b>Strikeout Color</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE__STRIKEOUT_COLOR = 7;
+
+	/**
+	 * The number of structural features of the '<em>Text Style</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE_FEATURE_COUNT = 8;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl <em>Text Style Region</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getTextStyleRegion()
+	 * @since 0.10
+	 * @generated
+	 */
+	int TEXT_STYLE_REGION = 12;
+
+	/**
+	 * The feature id for the '<em><b>Start</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE_REGION__START = 0;
+
+	/**
+	 * The feature id for the '<em><b>End</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE_REGION__END = 1;
+
+	/**
+	 * The feature id for the '<em><b>Style</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE_REGION__STYLE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Text Style Region</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @since 0.10
+	 * @ordered
+	 */
+	int TEXT_STYLE_REGION_FEATURE_COUNT = 3;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.LineStyle <em>Line Style</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -751,7 +905,7 @@
 	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getLineStyle()
 	 * @generated
 	 */
-	int LINE_STYLE = 11;
+	int LINE_STYLE = 13;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.Orientation <em>Orientation</em>}' enum.
@@ -761,7 +915,7 @@
 	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getOrientation()
 	 * @generated
 	 */
-	int ORIENTATION = 12;
+	int ORIENTATION = 14;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.LocationType <em>Location Type</em>}' enum.
@@ -771,7 +925,19 @@
 	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getLocationType()
 	 * @generated
 	 */
-	int LOCATION_TYPE = 13;
+	int LOCATION_TYPE = 15;
+
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle <em>Underline Style</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getUnderlineStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	int UNDERLINE_STYLE = 16;
 
 
 	/**
@@ -1350,6 +1516,160 @@
 	EAttribute getPrecisionPoint_Y();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle <em>Text Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Text Style</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle
+	 * @generated
+	 * @since 0.10
+	 */
+	EClass getTextStyle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isUnderline <em>Underline</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Underline</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isUnderline()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EAttribute getTextStyle_Underline();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineStyle <em>Underline Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Underline Style</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineStyle()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EAttribute getTextStyle_UnderlineStyle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isStrikeout <em>Strikeout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Strikeout</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isStrikeout()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EAttribute getTextStyle_Strikeout();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getFont <em>Font</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Font</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getFont()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyle_Font();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getForeground <em>Foreground</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Foreground</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getForeground()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyle_Foreground();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getBackground <em>Background</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Background</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getBackground()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyle_Background();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineColor <em>Underline Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Underline Color</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineColor()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyle_UnderlineColor();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getStrikeoutColor <em>Strikeout Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Strikeout Color</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getStrikeoutColor()
+	 * @see #getTextStyle()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyle_StrikeoutColor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion <em>Text Style Region</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Text Style Region</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion
+	 * @generated
+	 * @since 0.10
+	 */
+	EClass getTextStyleRegion();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStart <em>Start</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Start</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStart()
+	 * @see #getTextStyleRegion()
+	 * @generated
+	 * @since 0.10
+	 */
+	EAttribute getTextStyleRegion_Start();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getEnd <em>End</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getEnd()
+	 * @see #getTextStyleRegion()
+	 * @generated
+	 * @since 0.10
+	 */
+	EAttribute getTextStyleRegion_End();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStyle <em>Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Style</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStyle()
+	 * @see #getTextStyleRegion()
+	 * @generated
+	 * @since 0.10
+	 */
+	EReference getTextStyleRegion_Style();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.graphiti.mm.algorithms.styles.LineStyle <em>Line Style</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1380,6 +1700,17 @@
 	EEnum getLocationType();
 
 	/**
+	 * Returns the meta object for enum '{@link org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle <em>Underline Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Underline Style</em>'.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle
+	 * @generated
+	 * @since 0.10
+	 */
+	EEnum getUnderlineStyle();
+
+	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1398,6 +1729,8 @@
 	 *   <li>and each data type</li>
 	 * </ul>
 	 * <!-- end-user-doc -->
+	 * @noextend This interface is not intended to be extended by clients.
+ 	 * @noimplement This interface is not intended to be implemented by clients.
 	 * @generated
 	 */
 	interface Literals {
@@ -1851,6 +2184,127 @@
 		EAttribute PRECISION_POINT__Y = eINSTANCE.getPrecisionPoint_Y();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl <em>Text Style</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getTextStyle()
+		 * @since 0.10
+		 * @generated
+		 */
+		EClass TEXT_STYLE = eINSTANCE.getTextStyle();
+
+		/**
+		 * The meta object literal for the '<em><b>Underline</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EAttribute TEXT_STYLE__UNDERLINE = eINSTANCE.getTextStyle_Underline();
+
+		/**
+		 * The meta object literal for the '<em><b>Underline Style</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EAttribute TEXT_STYLE__UNDERLINE_STYLE = eINSTANCE.getTextStyle_UnderlineStyle();
+
+		/**
+		 * The meta object literal for the '<em><b>Strikeout</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EAttribute TEXT_STYLE__STRIKEOUT = eINSTANCE.getTextStyle_Strikeout();
+
+		/**
+		 * The meta object literal for the '<em><b>Font</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 * @since 0.10
+		 */
+		EReference TEXT_STYLE__FONT = eINSTANCE.getTextStyle_Font();
+
+		/**
+		 * The meta object literal for the '<em><b>Foreground</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EReference TEXT_STYLE__FOREGROUND = eINSTANCE.getTextStyle_Foreground();
+
+		/**
+		 * The meta object literal for the '<em><b>Background</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 * @since 0.10
+		 */
+		EReference TEXT_STYLE__BACKGROUND = eINSTANCE.getTextStyle_Background();
+
+		/**
+		 * The meta object literal for the '<em><b>Underline Color</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EReference TEXT_STYLE__UNDERLINE_COLOR = eINSTANCE.getTextStyle_UnderlineColor();
+
+		/**
+		 * The meta object literal for the '<em><b>Strikeout Color</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EReference TEXT_STYLE__STRIKEOUT_COLOR = eINSTANCE.getTextStyle_StrikeoutColor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl <em>Text Style Region</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getTextStyleRegion()
+		 * @since 0.10
+		 * @generated
+		 */
+		EClass TEXT_STYLE_REGION = eINSTANCE.getTextStyleRegion();
+
+		/**
+		 * The meta object literal for the '<em><b>Start</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EAttribute TEXT_STYLE_REGION__START = eINSTANCE.getTextStyleRegion_Start();
+
+		/**
+		 * The meta object literal for the '<em><b>End</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EAttribute TEXT_STYLE_REGION__END = eINSTANCE.getTextStyleRegion_End();
+
+		/**
+		 * The meta object literal for the '<em><b>Style</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @since 0.10
+		 * @generated
+		 */
+		EReference TEXT_STYLE_REGION__STYLE = eINSTANCE.getTextStyleRegion_Style();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.graphiti.mm.algorithms.styles.LineStyle <em>Line Style</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1880,6 +2334,17 @@
 		 */
 		EEnum LOCATION_TYPE = eINSTANCE.getLocationType();
 
+		/**
+		 * The meta object literal for the '{@link org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle <em>Underline Style</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle
+		 * @see org.eclipse.graphiti.mm.algorithms.styles.impl.StylesPackageImpl#getUnderlineStyle()
+		 * @generated
+		 * @since 0.10
+		 */
+		EEnum UNDERLINE_STYLE = eINSTANCE.getUnderlineStyle();
+
 	}
 
 } //StylesPackage
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyle.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyle.java
new file mode 100644
index 0000000..89a35e9
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyle.java
@@ -0,0 +1,255 @@
+/**

+ * <copyright>

+ * 

+ * Copyright (c) 2005, 2011 SAP AG.

+ * 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:

+ *    SAP AG - initial API, implementation and documentation

+ * 

+ * </copyright>

+ */

+package org.eclipse.graphiti.mm.algorithms.styles;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Text Style</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isUnderline <em>Underline</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineStyle <em>Underline Style</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isStrikeout <em>Strikeout</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getFont <em>Font</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getForeground <em>Foreground</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getBackground <em>Background</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineColor <em>Underline Color</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getStrikeoutColor <em>Strikeout Color</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle()

+ * @model

+ * @generated

+ * @since 0.10

+ */

+public interface TextStyle extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Underline</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Underline</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Underline</em>' attribute.

+	 * @see #setUnderline(boolean)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_Underline()

+	 * @model

+	 * @generated

+	 */

+	boolean isUnderline();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isUnderline <em>Underline</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Underline</em>' attribute.

+	 * @see #isUnderline()

+	 * @generated

+	 */

+	void setUnderline(boolean value);

+

+	/**

+	 * Returns the value of the '<em><b>Underline Style</b></em>' attribute.

+	 * The literals are from the enumeration {@link org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle}.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Underline Style</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Underline Style</em>' attribute.

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle

+	 * @see #setUnderlineStyle(UnderlineStyle)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_UnderlineStyle()

+	 * @model

+	 * @generated

+	 */

+	UnderlineStyle getUnderlineStyle();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineStyle <em>Underline Style</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Underline Style</em>' attribute.

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle

+	 * @see #getUnderlineStyle()

+	 * @generated

+	 */

+	void setUnderlineStyle(UnderlineStyle value);

+

+	/**

+	 * Returns the value of the '<em><b>Strikeout</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Strikeout</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Strikeout</em>' attribute.

+	 * @see #setStrikeout(boolean)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_Strikeout()

+	 * @model

+	 * @generated

+	 */

+	boolean isStrikeout();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#isStrikeout <em>Strikeout</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Strikeout</em>' attribute.

+	 * @see #isStrikeout()

+	 * @generated

+	 */

+	void setStrikeout(boolean value);

+

+	/**

+	 * Returns the value of the '<em><b>Font</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Font</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Font</em>' reference.

+	 * @see #setFont(Font)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_Font()

+	 * @model

+	 * @generated

+	 */

+	Font getFont();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getFont <em>Font</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Font</em>' reference.

+	 * @see #getFont()

+	 * @generated

+	 */

+	void setFont(Font value);

+

+	/**

+	 * Returns the value of the '<em><b>Foreground</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Foreground</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Foreground</em>' reference.

+	 * @see #setForeground(Color)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_Foreground()

+	 * @model

+	 * @generated

+	 */

+	Color getForeground();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getForeground <em>Foreground</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Foreground</em>' reference.

+	 * @see #getForeground()

+	 * @generated

+	 */

+	void setForeground(Color value);

+

+	/**

+	 * Returns the value of the '<em><b>Background</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Background</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Background</em>' reference.

+	 * @see #setBackground(Color)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_Background()

+	 * @model

+	 * @generated

+	 */

+	Color getBackground();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getBackground <em>Background</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Background</em>' reference.

+	 * @see #getBackground()

+	 * @generated

+	 */

+	void setBackground(Color value);

+

+	/**

+	 * Returns the value of the '<em><b>Underline Color</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Underline Color</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Underline Color</em>' reference.

+	 * @see #setUnderlineColor(Color)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_UnderlineColor()

+	 * @model

+	 * @generated

+	 */

+	Color getUnderlineColor();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getUnderlineColor <em>Underline Color</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Underline Color</em>' reference.

+	 * @see #getUnderlineColor()

+	 * @generated

+	 */

+	void setUnderlineColor(Color value);

+

+	/**

+	 * Returns the value of the '<em><b>Strikeout Color</b></em>' reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Strikeout Color</em>' reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Strikeout Color</em>' reference.

+	 * @see #setStrikeoutColor(Color)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyle_StrikeoutColor()

+	 * @model

+	 * @generated

+	 */

+	Color getStrikeoutColor();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle#getStrikeoutColor <em>Strikeout Color</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Strikeout Color</em>' reference.

+	 * @see #getStrikeoutColor()

+	 * @generated

+	 */

+	void setStrikeoutColor(Color value);

+

+} // TextStyle

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyleRegion.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyleRegion.java
new file mode 100644
index 0000000..964857c
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/TextStyleRegion.java
@@ -0,0 +1,117 @@
+/**

+ * <copyright>

+ * 

+ * Copyright (c) 2005, 2011 SAP AG.

+ * 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:

+ *    SAP AG - initial API, implementation and documentation

+ * 

+ * </copyright>

+ */

+package org.eclipse.graphiti.mm.algorithms.styles;

+

+import org.eclipse.emf.ecore.EObject;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the model object '<em><b>Text Style Region</b></em>'.

+ * <!-- end-user-doc -->

+ *

+ * <p>

+ * The following features are supported:

+ * <ul>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStart <em>Start</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getEnd <em>End</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStyle <em>Style</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyleRegion()

+ * @model

+ * @generated

+ * @since 0.10

+ */

+public interface TextStyleRegion extends EObject {

+	/**

+	 * Returns the value of the '<em><b>Start</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Start</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Start</em>' attribute.

+	 * @see #setStart(int)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyleRegion_Start()

+	 * @model

+	 * @generated

+	 */

+	int getStart();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStart <em>Start</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Start</em>' attribute.

+	 * @see #getStart()

+	 * @generated

+	 */

+	void setStart(int value);

+

+	/**

+	 * Returns the value of the '<em><b>End</b></em>' attribute.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>End</em>' attribute isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>End</em>' attribute.

+	 * @see #setEnd(int)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyleRegion_End()

+	 * @model

+	 * @generated

+	 */

+	int getEnd();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getEnd <em>End</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>End</em>' attribute.

+	 * @see #getEnd()

+	 * @generated

+	 */

+	void setEnd(int value);

+

+	/**

+	 * Returns the value of the '<em><b>Style</b></em>' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of the '<em>Style</em>' containment reference isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @return the value of the '<em>Style</em>' containment reference.

+	 * @see #setStyle(TextStyle)

+	 * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getTextStyleRegion_Style()

+	 * @model containment="true" resolveProxies="true"

+	 * @generated

+	 */

+	TextStyle getStyle();

+

+	/**

+	 * Sets the value of the '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion#getStyle <em>Style</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @param value the new value of the '<em>Style</em>' containment reference.

+	 * @see #getStyle()

+	 * @generated

+	 */

+	void setStyle(TextStyle value);

+

+} // TextStyleRegion

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/UnderlineStyle.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/UnderlineStyle.java
new file mode 100644
index 0000000..bf2d150
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/UnderlineStyle.java
@@ -0,0 +1,275 @@
+/**

+ * <copyright>

+ * 

+ * Copyright (c) 2005, 2011 SAP AG.

+ * 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:

+ *    SAP AG - initial API, implementation and documentation

+ * 

+ * </copyright>

+ */

+package org.eclipse.graphiti.mm.algorithms.styles;

+

+import java.util.Arrays;

+import java.util.Collections;

+import java.util.List;

+

+import org.eclipse.emf.common.util.Enumerator;

+

+/**

+ * <!-- begin-user-doc -->

+ * A representation of the literals of the enumeration '<em><b>Underline Style</b></em>',

+ * and utility methods for working with them.

+ * <!-- end-user-doc -->

+ * @see org.eclipse.graphiti.mm.algorithms.styles.StylesPackage#getUnderlineStyle()

+ * @model

+ * @generated

+ * @since 0.10

+ */

+public enum UnderlineStyle implements Enumerator {

+	/**

+	 * The '<em><b>UNDERLINE SINGLE</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_SINGLE_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	UNDERLINE_SINGLE(0, "UNDERLINE_SINGLE", "UNDERLINE_SINGLE"),

+

+	/**

+	 * The '<em><b>UNDERLINE DOUBLE</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_DOUBLE_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	UNDERLINE_DOUBLE(1, "UNDERLINE_DOUBLE", "UNDERLINE_DOUBLE"),

+

+	/**

+	 * The '<em><b>UNDERLINE ERROR</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_ERROR_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	UNDERLINE_ERROR(2, "UNDERLINE_ERROR", "UNDERLINE_ERROR"),

+

+	/**

+	 * The '<em><b>UNDERLINE SQUIGGLE</b></em>' literal object.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_SQUIGGLE_VALUE

+	 * @generated

+	 * @ordered

+	 */

+	UNDERLINE_SQUIGGLE(3, "UNDERLINE_SQUIGGLE", "UNDERLINE_SQUIGGLE");

+

+	/**

+	 * The '<em><b>UNDERLINE SINGLE</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>UNDERLINE SINGLE</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_SINGLE

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int UNDERLINE_SINGLE_VALUE = 0;

+

+	/**

+	 * The '<em><b>UNDERLINE DOUBLE</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>UNDERLINE DOUBLE</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_DOUBLE

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int UNDERLINE_DOUBLE_VALUE = 1;

+

+	/**

+	 * The '<em><b>UNDERLINE ERROR</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>UNDERLINE ERROR</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_ERROR

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int UNDERLINE_ERROR_VALUE = 2;

+

+	/**

+	 * The '<em><b>UNDERLINE SQUIGGLE</b></em>' literal value.

+	 * <!-- begin-user-doc -->

+	 * <p>

+	 * If the meaning of '<em><b>UNDERLINE SQUIGGLE</b></em>' literal object isn't clear,

+	 * there really should be more of a description here...

+	 * </p>

+	 * <!-- end-user-doc -->

+	 * @see #UNDERLINE_SQUIGGLE

+	 * @model

+	 * @generated

+	 * @ordered

+	 */

+	public static final int UNDERLINE_SQUIGGLE_VALUE = 3;

+

+	/**

+	 * An array of all the '<em><b>Underline Style</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private static final UnderlineStyle[] VALUES_ARRAY =

+		new UnderlineStyle[] {

+			UNDERLINE_SINGLE,

+			UNDERLINE_DOUBLE,

+			UNDERLINE_ERROR,

+			UNDERLINE_SQUIGGLE,

+		};

+

+	/**

+	 * A public read-only list of all the '<em><b>Underline Style</b></em>' enumerators.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static final List<UnderlineStyle> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));

+

+	/**

+	 * Returns the '<em><b>Underline Style</b></em>' literal with the specified literal value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static UnderlineStyle get(String literal) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			UnderlineStyle result = VALUES_ARRAY[i];

+			if (result.toString().equals(literal)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>Underline Style</b></em>' literal with the specified name.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static UnderlineStyle getByName(String name) {

+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {

+			UnderlineStyle result = VALUES_ARRAY[i];

+			if (result.getName().equals(name)) {

+				return result;

+			}

+		}

+		return null;

+	}

+

+	/**

+	 * Returns the '<em><b>Underline Style</b></em>' literal with the specified integer value.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public static UnderlineStyle get(int value) {

+		switch (value) {

+			case UNDERLINE_SINGLE_VALUE: return UNDERLINE_SINGLE;

+			case UNDERLINE_DOUBLE_VALUE: return UNDERLINE_DOUBLE;

+			case UNDERLINE_ERROR_VALUE: return UNDERLINE_ERROR;

+			case UNDERLINE_SQUIGGLE_VALUE: return UNDERLINE_SQUIGGLE;

+		}

+		return null;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final int value;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final String name;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private final String literal;

+

+	/**

+	 * Only this class can construct instances.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	private UnderlineStyle(int value, String name, String literal) {

+		this.value = value;

+		this.name = name;

+		this.literal = literal;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getValue() {

+	  return value;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getName() {

+	  return name;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public String getLiteral() {

+	  return literal;

+	}

+

+	/**

+	 * Returns the literal value of the enumerator, which is its string representation.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		return literal;

+	}

+	

+} //UnderlineStyle

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesFactoryImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesFactoryImpl.java
index d6a0042..7c342e3 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesFactoryImpl.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesFactoryImpl.java
@@ -18,12 +18,26 @@
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
-
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
-
-import org.eclipse.graphiti.mm.algorithms.styles.*;
+import org.eclipse.graphiti.mm.algorithms.styles.AdaptedGradientColoredAreas;
+import org.eclipse.graphiti.mm.algorithms.styles.Color;
+import org.eclipse.graphiti.mm.algorithms.styles.Font;
+import org.eclipse.graphiti.mm.algorithms.styles.GradientColoredArea;
+import org.eclipse.graphiti.mm.algorithms.styles.GradientColoredAreas;
+import org.eclipse.graphiti.mm.algorithms.styles.GradientColoredLocation;
+import org.eclipse.graphiti.mm.algorithms.styles.LineStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.LocationType;
+import org.eclipse.graphiti.mm.algorithms.styles.Orientation;
+import org.eclipse.graphiti.mm.algorithms.styles.Point;
+import org.eclipse.graphiti.mm.algorithms.styles.PrecisionPoint;
+import org.eclipse.graphiti.mm.algorithms.styles.RenderingStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.Style;
+import org.eclipse.graphiti.mm.algorithms.styles.StylesFactory;
+import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
+import org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle;
 
 /**
  * <!-- begin-user-doc -->
@@ -79,6 +93,8 @@
 			case StylesPackage.POINT: return createPoint();
 			case StylesPackage.COLOR: return createColor();
 			case StylesPackage.PRECISION_POINT: return createPrecisionPoint();
+			case StylesPackage.TEXT_STYLE: return createTextStyle();
+			case StylesPackage.TEXT_STYLE_REGION: return createTextStyleRegion();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -98,6 +114,8 @@
 				return createOrientationFromString(eDataType, initialValue);
 			case StylesPackage.LOCATION_TYPE:
 				return createLocationTypeFromString(eDataType, initialValue);
+			case StylesPackage.UNDERLINE_STYLE:
+				return createUnderlineStyleFromString(eDataType, initialValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -117,6 +135,8 @@
 				return convertOrientationToString(eDataType, instanceValue);
 			case StylesPackage.LOCATION_TYPE:
 				return convertLocationTypeToString(eDataType, instanceValue);
+			case StylesPackage.UNDERLINE_STYLE:
+				return convertUnderlineStyleToString(eDataType, instanceValue);
 			default:
 				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -227,6 +247,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public TextStyle createTextStyle() {
+		TextStyleImpl textStyle = new TextStyleImpl();
+		return textStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TextStyleRegion createTextStyleRegion() {
+		TextStyleRegionImpl textStyleRegion = new TextStyleRegionImpl();
+		return textStyleRegion;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public LineStyle createLineStyleFromString(EDataType eDataType, String initialValue) {
 		LineStyle result = LineStyle.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
@@ -287,6 +327,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public UnderlineStyle createUnderlineStyleFromString(EDataType eDataType, String initialValue) {
+		UnderlineStyle result = UnderlineStyle.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertUnderlineStyleToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public StylesPackage getStylesPackage() {
 		return (StylesPackage)getEPackage();
 	}
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesPackageImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesPackageImpl.java
index 304884f..6021de9 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesPackageImpl.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/StylesPackageImpl.java
@@ -19,15 +19,10 @@
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
-
 import org.eclipse.emf.ecore.impl.EPackageImpl;
-
 import org.eclipse.graphiti.mm.MmPackage;
-
 import org.eclipse.graphiti.mm.algorithms.AlgorithmsPackage;
-
 import org.eclipse.graphiti.mm.algorithms.impl.AlgorithmsPackageImpl;
-
 import org.eclipse.graphiti.mm.algorithms.styles.AbstractStyle;
 import org.eclipse.graphiti.mm.algorithms.styles.AdaptedGradientColoredAreas;
 import org.eclipse.graphiti.mm.algorithms.styles.Color;
@@ -44,11 +39,11 @@
 import org.eclipse.graphiti.mm.algorithms.styles.Style;
 import org.eclipse.graphiti.mm.algorithms.styles.StylesFactory;
 import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;
-
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
+import org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle;
 import org.eclipse.graphiti.mm.impl.MmPackageImpl;
-
 import org.eclipse.graphiti.mm.pictograms.PictogramsPackage;
-
 import org.eclipse.graphiti.mm.pictograms.impl.PictogramsPackageImpl;
 
 /**
@@ -140,6 +135,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass textStyleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass textStyleRegionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum lineStyleEEnum = null;
 
 	/**
@@ -157,6 +166,13 @@
 	private EEnum locationTypeEEnum = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum underlineStyleEEnum = null;
+
+	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
 	 * package URI value.
@@ -710,6 +726,123 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getTextStyle() {
+		return textStyleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTextStyle_Underline() {
+		return (EAttribute)textStyleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTextStyle_UnderlineStyle() {
+		return (EAttribute)textStyleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTextStyle_Strikeout() {
+		return (EAttribute)textStyleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyle_Font() {
+		return (EReference)textStyleEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyle_Foreground() {
+		return (EReference)textStyleEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyle_Background() {
+		return (EReference)textStyleEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyle_UnderlineColor() {
+		return (EReference)textStyleEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyle_StrikeoutColor() {
+		return (EReference)textStyleEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTextStyleRegion() {
+		return textStyleRegionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTextStyleRegion_Start() {
+		return (EAttribute)textStyleRegionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTextStyleRegion_End() {
+		return (EAttribute)textStyleRegionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getTextStyleRegion_Style() {
+		return (EReference)textStyleRegionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EEnum getLineStyle() {
 		return lineStyleEEnum;
 	}
@@ -737,6 +870,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EEnum getUnderlineStyle() {
+		return underlineStyleEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public StylesFactory getStylesFactory() {
 		return (StylesFactory)getEFactoryInstance();
 	}
@@ -824,10 +966,26 @@
 		createEAttribute(precisionPointEClass, PRECISION_POINT__X);
 		createEAttribute(precisionPointEClass, PRECISION_POINT__Y);
 
+		textStyleEClass = createEClass(TEXT_STYLE);
+		createEAttribute(textStyleEClass, TEXT_STYLE__UNDERLINE);
+		createEAttribute(textStyleEClass, TEXT_STYLE__UNDERLINE_STYLE);
+		createEAttribute(textStyleEClass, TEXT_STYLE__STRIKEOUT);
+		createEReference(textStyleEClass, TEXT_STYLE__FONT);
+		createEReference(textStyleEClass, TEXT_STYLE__FOREGROUND);
+		createEReference(textStyleEClass, TEXT_STYLE__BACKGROUND);
+		createEReference(textStyleEClass, TEXT_STYLE__UNDERLINE_COLOR);
+		createEReference(textStyleEClass, TEXT_STYLE__STRIKEOUT_COLOR);
+
+		textStyleRegionEClass = createEClass(TEXT_STYLE_REGION);
+		createEAttribute(textStyleRegionEClass, TEXT_STYLE_REGION__START);
+		createEAttribute(textStyleRegionEClass, TEXT_STYLE_REGION__END);
+		createEReference(textStyleRegionEClass, TEXT_STYLE_REGION__STYLE);
+
 		// Create enums
 		lineStyleEEnum = createEEnum(LINE_STYLE);
 		orientationEEnum = createEEnum(ORIENTATION);
 		locationTypeEEnum = createEEnum(LOCATION_TYPE);
+		underlineStyleEEnum = createEEnum(UNDERLINE_STYLE);
 	}
 
 	/**
@@ -929,6 +1087,21 @@
 		initEAttribute(getPrecisionPoint_X(), ecorePackage.getEDouble(), "x", null, 1, 1, PrecisionPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getPrecisionPoint_Y(), ecorePackage.getEDouble(), "y", null, 1, 1, PrecisionPoint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(textStyleEClass, TextStyle.class, "TextStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTextStyle_Underline(), ecorePackage.getEBoolean(), "underline", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTextStyle_UnderlineStyle(), this.getUnderlineStyle(), "underlineStyle", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTextStyle_Strikeout(), ecorePackage.getEBoolean(), "strikeout", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyle_Font(), this.getFont(), null, "font", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyle_Foreground(), this.getColor(), null, "foreground", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyle_Background(), this.getColor(), null, "background", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyle_UnderlineColor(), this.getColor(), null, "underlineColor", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyle_StrikeoutColor(), this.getColor(), null, "strikeoutColor", null, 0, 1, TextStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(textStyleRegionEClass, TextStyleRegion.class, "TextStyleRegion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTextStyleRegion_Start(), ecorePackage.getEInt(), "start", null, 0, 1, TextStyleRegion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getTextStyleRegion_End(), ecorePackage.getEInt(), "end", null, 0, 1, TextStyleRegion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getTextStyleRegion_Style(), this.getTextStyle(), null, "style", null, 0, 1, TextStyleRegion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Initialize enums and add enum literals
 		initEEnum(lineStyleEEnum, LineStyle.class, "LineStyle");
 		addEEnumLiteral(lineStyleEEnum, LineStyle.SOLID);
@@ -951,6 +1124,12 @@
 		addEEnumLiteral(locationTypeEEnum, LocationType.LOCATION_TYPE_RELATIVE);
 		addEEnumLiteral(locationTypeEEnum, LocationType.LOCATION_TYPE_ABSOLUTE_START);
 		addEEnumLiteral(locationTypeEEnum, LocationType.LOCATION_TYPE_ABSOLUTE_END);
+
+		initEEnum(underlineStyleEEnum, UnderlineStyle.class, "UnderlineStyle");
+		addEEnumLiteral(underlineStyleEEnum, UnderlineStyle.UNDERLINE_SINGLE);
+		addEEnumLiteral(underlineStyleEEnum, UnderlineStyle.UNDERLINE_DOUBLE);
+		addEEnumLiteral(underlineStyleEEnum, UnderlineStyle.UNDERLINE_ERROR);
+		addEEnumLiteral(underlineStyleEEnum, UnderlineStyle.UNDERLINE_SQUIGGLE);
 	}
 
 } //StylesPackageImpl
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleImpl.java
new file mode 100644
index 0000000..4947c72
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleImpl.java
@@ -0,0 +1,584 @@
+/**

+ * <copyright>

+ * 

+ * Copyright (c) 2005, 2011 SAP AG.

+ * 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:

+ *    SAP AG - initial API, implementation and documentation

+ * 

+ * </copyright>

+ */

+package org.eclipse.graphiti.mm.algorithms.styles.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+import org.eclipse.graphiti.mm.algorithms.styles.Color;

+import org.eclipse.graphiti.mm.algorithms.styles.Font;

+import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;

+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;

+import org.eclipse.graphiti.mm.algorithms.styles.UnderlineStyle;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Text Style</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#isUnderline <em>Underline</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getUnderlineStyle <em>Underline Style</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#isStrikeout <em>Strikeout</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getFont <em>Font</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getForeground <em>Foreground</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getBackground <em>Background</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getUnderlineColor <em>Underline Color</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleImpl#getStrikeoutColor <em>Strikeout Color</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class TextStyleImpl extends EObjectImpl implements TextStyle {

+	/**

+	 * The default value of the '{@link #isUnderline() <em>Underline</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isUnderline()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean UNDERLINE_EDEFAULT = false;

+

+	/**

+	 * The cached value of the '{@link #isUnderline() <em>Underline</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isUnderline()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean underline = UNDERLINE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getUnderlineStyle() <em>Underline Style</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUnderlineStyle()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final UnderlineStyle UNDERLINE_STYLE_EDEFAULT = UnderlineStyle.UNDERLINE_SINGLE;

+

+	/**

+	 * The cached value of the '{@link #getUnderlineStyle() <em>Underline Style</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUnderlineStyle()

+	 * @generated

+	 * @ordered

+	 */

+	protected UnderlineStyle underlineStyle = UNDERLINE_STYLE_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #isStrikeout() <em>Strikeout</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrikeout()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final boolean STRIKEOUT_EDEFAULT = false;

+

+	/**

+	 * The cached value of the '{@link #isStrikeout() <em>Strikeout</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #isStrikeout()

+	 * @generated

+	 * @ordered

+	 */

+	protected boolean strikeout = STRIKEOUT_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getFont() <em>Font</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getFont()

+	 * @generated

+	 * @ordered

+	 */

+	protected Font font;

+

+	/**

+	 * The cached value of the '{@link #getForeground() <em>Foreground</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getForeground()

+	 * @generated

+	 * @ordered

+	 */

+	protected Color foreground;

+

+	/**

+	 * The cached value of the '{@link #getBackground() <em>Background</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getBackground()

+	 * @generated

+	 * @ordered

+	 */

+	protected Color background;

+

+	/**

+	 * The cached value of the '{@link #getUnderlineColor() <em>Underline Color</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getUnderlineColor()

+	 * @generated

+	 * @ordered

+	 */

+	protected Color underlineColor;

+

+	/**

+	 * The cached value of the '{@link #getStrikeoutColor() <em>Strikeout Color</em>}' reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getStrikeoutColor()

+	 * @generated

+	 * @ordered

+	 */

+	protected Color strikeoutColor;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TextStyleImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return StylesPackage.Literals.TEXT_STYLE;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isUnderline() {

+		return underline;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setUnderline(boolean newUnderline) {

+		boolean oldUnderline = underline;

+		underline = newUnderline;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__UNDERLINE, oldUnderline, underline));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public UnderlineStyle getUnderlineStyle() {

+		return underlineStyle;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setUnderlineStyle(UnderlineStyle newUnderlineStyle) {

+		UnderlineStyle oldUnderlineStyle = underlineStyle;

+		underlineStyle = newUnderlineStyle == null ? UNDERLINE_STYLE_EDEFAULT : newUnderlineStyle;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__UNDERLINE_STYLE, oldUnderlineStyle, underlineStyle));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean isStrikeout() {

+		return strikeout;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStrikeout(boolean newStrikeout) {

+		boolean oldStrikeout = strikeout;

+		strikeout = newStrikeout;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__STRIKEOUT, oldStrikeout, strikeout));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Font getFont() {

+		if (font != null && font.eIsProxy()) {

+			InternalEObject oldFont = (InternalEObject)font;

+			font = (Font)eResolveProxy(oldFont);

+			if (font != oldFont) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE__FONT, oldFont, font));

+			}

+		}

+		return font;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Font basicGetFont() {

+		return font;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setFont(Font newFont) {

+		Font oldFont = font;

+		font = newFont;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__FONT, oldFont, font));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color getForeground() {

+		if (foreground != null && foreground.eIsProxy()) {

+			InternalEObject oldForeground = (InternalEObject)foreground;

+			foreground = (Color)eResolveProxy(oldForeground);

+			if (foreground != oldForeground) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE__FOREGROUND, oldForeground, foreground));

+			}

+		}

+		return foreground;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color basicGetForeground() {

+		return foreground;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setForeground(Color newForeground) {

+		Color oldForeground = foreground;

+		foreground = newForeground;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__FOREGROUND, oldForeground, foreground));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color getBackground() {

+		if (background != null && background.eIsProxy()) {

+			InternalEObject oldBackground = (InternalEObject)background;

+			background = (Color)eResolveProxy(oldBackground);

+			if (background != oldBackground) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE__BACKGROUND, oldBackground, background));

+			}

+		}

+		return background;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color basicGetBackground() {

+		return background;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setBackground(Color newBackground) {

+		Color oldBackground = background;

+		background = newBackground;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__BACKGROUND, oldBackground, background));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color getUnderlineColor() {

+		if (underlineColor != null && underlineColor.eIsProxy()) {

+			InternalEObject oldUnderlineColor = (InternalEObject)underlineColor;

+			underlineColor = (Color)eResolveProxy(oldUnderlineColor);

+			if (underlineColor != oldUnderlineColor) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE__UNDERLINE_COLOR, oldUnderlineColor, underlineColor));

+			}

+		}

+		return underlineColor;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color basicGetUnderlineColor() {

+		return underlineColor;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setUnderlineColor(Color newUnderlineColor) {

+		Color oldUnderlineColor = underlineColor;

+		underlineColor = newUnderlineColor;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__UNDERLINE_COLOR, oldUnderlineColor, underlineColor));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color getStrikeoutColor() {

+		if (strikeoutColor != null && strikeoutColor.eIsProxy()) {

+			InternalEObject oldStrikeoutColor = (InternalEObject)strikeoutColor;

+			strikeoutColor = (Color)eResolveProxy(oldStrikeoutColor);

+			if (strikeoutColor != oldStrikeoutColor) {

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR, oldStrikeoutColor, strikeoutColor));

+			}

+		}

+		return strikeoutColor;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public Color basicGetStrikeoutColor() {

+		return strikeoutColor;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStrikeoutColor(Color newStrikeoutColor) {

+		Color oldStrikeoutColor = strikeoutColor;

+		strikeoutColor = newStrikeoutColor;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR, oldStrikeoutColor, strikeoutColor));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE__UNDERLINE:

+				return isUnderline();

+			case StylesPackage.TEXT_STYLE__UNDERLINE_STYLE:

+				return getUnderlineStyle();

+			case StylesPackage.TEXT_STYLE__STRIKEOUT:

+				return isStrikeout();

+			case StylesPackage.TEXT_STYLE__FONT:

+				if (resolve) return getFont();

+				return basicGetFont();

+			case StylesPackage.TEXT_STYLE__FOREGROUND:

+				if (resolve) return getForeground();

+				return basicGetForeground();

+			case StylesPackage.TEXT_STYLE__BACKGROUND:

+				if (resolve) return getBackground();

+				return basicGetBackground();

+			case StylesPackage.TEXT_STYLE__UNDERLINE_COLOR:

+				if (resolve) return getUnderlineColor();

+				return basicGetUnderlineColor();

+			case StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR:

+				if (resolve) return getStrikeoutColor();

+				return basicGetStrikeoutColor();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE__UNDERLINE:

+				setUnderline((Boolean)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_STYLE:

+				setUnderlineStyle((UnderlineStyle)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT:

+				setStrikeout((Boolean)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__FONT:

+				setFont((Font)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__FOREGROUND:

+				setForeground((Color)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__BACKGROUND:

+				setBackground((Color)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_COLOR:

+				setUnderlineColor((Color)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR:

+				setStrikeoutColor((Color)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE__UNDERLINE:

+				setUnderline(UNDERLINE_EDEFAULT);

+				return;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_STYLE:

+				setUnderlineStyle(UNDERLINE_STYLE_EDEFAULT);

+				return;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT:

+				setStrikeout(STRIKEOUT_EDEFAULT);

+				return;

+			case StylesPackage.TEXT_STYLE__FONT:

+				setFont((Font)null);

+				return;

+			case StylesPackage.TEXT_STYLE__FOREGROUND:

+				setForeground((Color)null);

+				return;

+			case StylesPackage.TEXT_STYLE__BACKGROUND:

+				setBackground((Color)null);

+				return;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_COLOR:

+				setUnderlineColor((Color)null);

+				return;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR:

+				setStrikeoutColor((Color)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE__UNDERLINE:

+				return underline != UNDERLINE_EDEFAULT;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_STYLE:

+				return underlineStyle != UNDERLINE_STYLE_EDEFAULT;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT:

+				return strikeout != STRIKEOUT_EDEFAULT;

+			case StylesPackage.TEXT_STYLE__FONT:

+				return font != null;

+			case StylesPackage.TEXT_STYLE__FOREGROUND:

+				return foreground != null;

+			case StylesPackage.TEXT_STYLE__BACKGROUND:

+				return background != null;

+			case StylesPackage.TEXT_STYLE__UNDERLINE_COLOR:

+				return underlineColor != null;

+			case StylesPackage.TEXT_STYLE__STRIKEOUT_COLOR:

+				return strikeoutColor != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (underline: ");

+		result.append(underline);

+		result.append(", underlineStyle: ");

+		result.append(underlineStyle);

+		result.append(", strikeout: ");

+		result.append(strikeout);

+		result.append(')');

+		return result.toString();

+	}

+

+} //TextStyleImpl

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleRegionImpl.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleRegionImpl.java
new file mode 100644
index 0000000..1b0d817
--- /dev/null
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/impl/TextStyleRegionImpl.java
@@ -0,0 +1,331 @@
+/**

+ * <copyright>

+ * 

+ * Copyright (c) 2005, 2011 SAP AG.

+ * 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:

+ *    SAP AG - initial API, implementation and documentation

+ * 

+ * </copyright>

+ */

+package org.eclipse.graphiti.mm.algorithms.styles.impl;

+

+import org.eclipse.emf.common.notify.Notification;

+import org.eclipse.emf.common.notify.NotificationChain;

+import org.eclipse.emf.ecore.EClass;

+import org.eclipse.emf.ecore.InternalEObject;

+import org.eclipse.emf.ecore.impl.ENotificationImpl;

+import org.eclipse.emf.ecore.impl.EObjectImpl;

+import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;

+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;

+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;

+

+/**

+ * <!-- begin-user-doc -->

+ * An implementation of the model object '<em><b>Text Style Region</b></em>'.

+ * <!-- end-user-doc -->

+ * <p>

+ * The following features are implemented:

+ * <ul>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl#getStart <em>Start</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl#getEnd <em>End</em>}</li>

+ *   <li>{@link org.eclipse.graphiti.mm.algorithms.styles.impl.TextStyleRegionImpl#getStyle <em>Style</em>}</li>

+ * </ul>

+ * </p>

+ *

+ * @generated

+ */

+public class TextStyleRegionImpl extends EObjectImpl implements TextStyleRegion {

+	/**

+	 * The default value of the '{@link #getStart() <em>Start</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getStart()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final int START_EDEFAULT = 0;

+

+	/**

+	 * The cached value of the '{@link #getStart() <em>Start</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getStart()

+	 * @generated

+	 * @ordered

+	 */

+	protected int start = START_EDEFAULT;

+

+	/**

+	 * The default value of the '{@link #getEnd() <em>End</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getEnd()

+	 * @generated

+	 * @ordered

+	 */

+	protected static final int END_EDEFAULT = 0;

+

+	/**

+	 * The cached value of the '{@link #getEnd() <em>End</em>}' attribute.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getEnd()

+	 * @generated

+	 * @ordered

+	 */

+	protected int end = END_EDEFAULT;

+

+	/**

+	 * The cached value of the '{@link #getStyle() <em>Style</em>}' containment reference.

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @see #getStyle()

+	 * @generated

+	 * @ordered

+	 */

+	protected TextStyle style;

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	protected TextStyleRegionImpl() {

+		super();

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	protected EClass eStaticClass() {

+		return StylesPackage.Literals.TEXT_STYLE_REGION;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getStart() {

+		return start;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStart(int newStart) {

+		int oldStart = start;

+		start = newStart;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE_REGION__START, oldStart, start));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public int getEnd() {

+		return end;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setEnd(int newEnd) {

+		int oldEnd = end;

+		end = newEnd;

+		if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE_REGION__END, oldEnd, end));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public TextStyle getStyle() {

+		if (style != null && style.eIsProxy()) {

+			InternalEObject oldStyle = (InternalEObject)style;

+			style = (TextStyle)eResolveProxy(oldStyle);

+			if (style != oldStyle) {

+				InternalEObject newStyle = (InternalEObject)style;

+				NotificationChain msgs = oldStyle.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StylesPackage.TEXT_STYLE_REGION__STYLE, null, null);

+				if (newStyle.eInternalContainer() == null) {

+					msgs = newStyle.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StylesPackage.TEXT_STYLE_REGION__STYLE, null, msgs);

+				}

+				if (msgs != null) msgs.dispatch();

+				if (eNotificationRequired())

+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, StylesPackage.TEXT_STYLE_REGION__STYLE, oldStyle, style));

+			}

+		}

+		return style;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public TextStyle basicGetStyle() {

+		return style;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public NotificationChain basicSetStyle(TextStyle newStyle, NotificationChain msgs) {

+		TextStyle oldStyle = style;

+		style = newStyle;

+		if (eNotificationRequired()) {

+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE_REGION__STYLE, oldStyle, newStyle);

+			if (msgs == null) msgs = notification; else msgs.add(notification);

+		}

+		return msgs;

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public void setStyle(TextStyle newStyle) {

+		if (newStyle != style) {

+			NotificationChain msgs = null;

+			if (style != null)

+				msgs = ((InternalEObject)style).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - StylesPackage.TEXT_STYLE_REGION__STYLE, null, msgs);

+			if (newStyle != null)

+				msgs = ((InternalEObject)newStyle).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - StylesPackage.TEXT_STYLE_REGION__STYLE, null, msgs);

+			msgs = basicSetStyle(newStyle, msgs);

+			if (msgs != null) msgs.dispatch();

+		}

+		else if (eNotificationRequired())

+			eNotify(new ENotificationImpl(this, Notification.SET, StylesPackage.TEXT_STYLE_REGION__STYLE, newStyle, newStyle));

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE_REGION__STYLE:

+				return basicSetStyle(null, msgs);

+		}

+		return super.eInverseRemove(otherEnd, featureID, msgs);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public Object eGet(int featureID, boolean resolve, boolean coreType) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE_REGION__START:

+				return getStart();

+			case StylesPackage.TEXT_STYLE_REGION__END:

+				return getEnd();

+			case StylesPackage.TEXT_STYLE_REGION__STYLE:

+				if (resolve) return getStyle();

+				return basicGetStyle();

+		}

+		return super.eGet(featureID, resolve, coreType);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eSet(int featureID, Object newValue) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE_REGION__START:

+				setStart((Integer)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE_REGION__END:

+				setEnd((Integer)newValue);

+				return;

+			case StylesPackage.TEXT_STYLE_REGION__STYLE:

+				setStyle((TextStyle)newValue);

+				return;

+		}

+		super.eSet(featureID, newValue);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public void eUnset(int featureID) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE_REGION__START:

+				setStart(START_EDEFAULT);

+				return;

+			case StylesPackage.TEXT_STYLE_REGION__END:

+				setEnd(END_EDEFAULT);

+				return;

+			case StylesPackage.TEXT_STYLE_REGION__STYLE:

+				setStyle((TextStyle)null);

+				return;

+		}

+		super.eUnset(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public boolean eIsSet(int featureID) {

+		switch (featureID) {

+			case StylesPackage.TEXT_STYLE_REGION__START:

+				return start != START_EDEFAULT;

+			case StylesPackage.TEXT_STYLE_REGION__END:

+				return end != END_EDEFAULT;

+			case StylesPackage.TEXT_STYLE_REGION__STYLE:

+				return style != null;

+		}

+		return super.eIsSet(featureID);

+	}

+

+	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	@Override

+	public String toString() {

+		if (eIsProxy()) return super.toString();

+

+		StringBuffer result = new StringBuffer(super.toString());

+		result.append(" (start: ");

+		result.append(start);

+		result.append(", end: ");

+		result.append(end);

+		result.append(')');

+		return result.toString();

+	}

+

+} //TextStyleRegionImpl

diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesAdapterFactory.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesAdapterFactory.java
index c7758a9..d0fd672 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesAdapterFactory.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesAdapterFactory.java
@@ -31,6 +31,8 @@
 import org.eclipse.graphiti.mm.algorithms.styles.RenderingStyle;
 import org.eclipse.graphiti.mm.algorithms.styles.Style;
 import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
 
 /**
  * <!-- begin-user-doc -->
@@ -133,6 +135,14 @@
 				return createPrecisionPointAdapter();
 			}
 			@Override
+			public Adapter caseTextStyle(TextStyle object) {
+				return createTextStyleAdapter();
+			}
+			@Override
+			public Adapter caseTextStyleRegion(TextStyleRegion object) {
+				return createTextStyleRegionAdapter();
+			}
+			@Override
 			public Adapter caseStyleContainer(StyleContainer object) {
 				return createStyleContainerAdapter();
 			}
@@ -297,9 +307,8 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.eclipse.graphiti.mm.algorithms.styles.PrecisionPoint
-	 * <em>Precision Point</em>}'. <!-- begin-user-doc --> This default
+	 * Creates a new adapter for an object of class '{@link org.eclipse.graphiti.mm.algorithms.styles.PrecisionPoint <em>Precision Point</em>}'.
+	 * <!-- begin-user-doc --> This default
 	 * implementation returns null so that we can easily ignore cases; it's
 	 * useful to ignore a case when inheritance will catch all the cases anyway.
 	 * 
@@ -313,6 +322,36 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyle <em>Text Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyle
+	 * @generated
+	 * @since 0.10
+	 */
+	public Adapter createTextStyleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion <em>Text Style Region</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion
+	 * @generated
+	 * @since 0.10
+	 */
+	public Adapter createTextStyleRegionAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.graphiti.mm.StyleContainer <em>Style Container</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesSwitch.java b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesSwitch.java
index ffbff73..bf83ec7 100644
--- a/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesSwitch.java
+++ b/plugins/org.eclipse.graphiti.mm/src-gen/org/eclipse/graphiti/mm/algorithms/styles/util/StylesSwitch.java
@@ -30,6 +30,8 @@
 import org.eclipse.graphiti.mm.algorithms.styles.RenderingStyle;
 import org.eclipse.graphiti.mm.algorithms.styles.Style;
 import org.eclipse.graphiti.mm.algorithms.styles.StylesPackage;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyle;
+import org.eclipse.graphiti.mm.algorithms.styles.TextStyleRegion;
 
 /**
  * <!-- begin-user-doc -->
@@ -156,6 +158,18 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case StylesPackage.TEXT_STYLE: {
+				TextStyle textStyle = (TextStyle)theEObject;
+				T result = caseTextStyle(textStyle);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case StylesPackage.TEXT_STYLE_REGION: {
+				TextStyleRegion textStyleRegion = (TextStyleRegion)theEObject;
+				T result = caseTextStyleRegion(textStyleRegion);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -326,6 +340,38 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch. 
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text Style</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 * @since 0.10
+	 */
+	public T caseTextStyle(TextStyle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Text Style Region</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Text Style Region</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 * @since 0.10
+	 */
+	public T caseTextStyleRegion(TextStyleRegion object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Style Container</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
index 7332514..70f1ecd 100644
--- a/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
+++ b/tests/org.eclipse.graphiti.bot.tests/src/org/eclipse/graphiti/bot/tests/GFOtherTests.java
@@ -1154,7 +1154,7 @@
 
 		try {
 			final Robot robot = new Robot();
-			robot.setAutoDelay(1);
+			robot.setAutoDelay(500);
 			try {
 				robot.keyPress(KeyEvent.VK_ALT);
 				robot.keyPress(KeyEvent.VK_LEFT);
@@ -1168,9 +1168,7 @@
 			fail(e.getMessage());
 		}
 
-		Thread.sleep(600);
-
-		SWTBotEditor swtBotEditor = bot.activeEditor();
+		SWTBotEditor swtBotEditor = bot.editorById(DiagramEditor.DIAGRAM_EDITOR_ID);
 		assertNotNull(swtBotEditor);
 		SWTBotStyledText styledText = swtBotEditor.bot().styledText();
 		assertNotNull(styledText);