Bug 548909: [Model2Doc] Add the table of figure concept in the document template

Change-Id: I1f21575d19ec93256aef8f36c8690e8c6d3593e0
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/custom_icons/full/obj16/TableOfFigures.gif b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/custom_icons/full/obj16/TableOfFigures.gif
new file mode 100755
index 0000000..d838a6d
--- /dev/null
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/custom_icons/full/obj16/TableOfFigures.gif
Binary files differ
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/icons/full/obj16/TableOfFigures.gif b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/icons/full/obj16/TableOfFigures.gif
new file mode 100755
index 0000000..d838a6d
--- /dev/null
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/icons/full/obj16/TableOfFigures.gif
Binary files differ
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/plugin.properties b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/plugin.properties
index 7f58fe8..403d1f3 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/plugin.properties
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/plugin.properties
@@ -96,3 +96,5 @@
 _UI_EClassFilterBehavior_TYPE_OF_literal = TYPE_OF
 _UI_EClassFilterBehavior_KIND_OF_literal = KIND_OF
 _UI_InsertFileTemplate_type = Insert File Template
+_UI_TableOfFigures_type = Table Of Figures
+_UI_TableOfFigures_tofTitle_feature = Tof Title
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/DocumentStructureTemplateItemProviderAdapterFactory.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/DocumentStructureTemplateItemProviderAdapterFactory.java
index 540f914..bec8e02 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/DocumentStructureTemplateItemProviderAdapterFactory.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/DocumentStructureTemplateItemProviderAdapterFactory.java
@@ -431,6 +431,31 @@
 	}
 
 	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TableOfFiguresItemProvider tableOfFiguresItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createTableOfFiguresAdapter() {
+		if (tableOfFiguresItemProvider == null) {
+			tableOfFiguresItemProvider = new TableOfFiguresItemProvider(this);
+		}
+
+		return tableOfFiguresItemProvider;
+	}
+
+	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -615,6 +640,9 @@
 		if (insertFileTemplateItemProvider != null) {
 			insertFileTemplateItemProvider.dispose();
 		}
+		if (tableOfFiguresItemProvider != null) {
+			tableOfFiguresItemProvider.dispose();
+		}
 	}
 
 }
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TableOfFiguresItemProvider.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TableOfFiguresItemProvider.java
new file mode 100755
index 0000000..23376ef
--- /dev/null
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TableOfFiguresItemProvider.java
@@ -0,0 +1,198 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentStructureTemplatePackage;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TableOfFiguresItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TableOfFiguresItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTofTitlePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Tof Title feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addTofTitlePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+				getResourceLocator(),
+				getString("_UI_TableOfFigures_tofTitle_feature"), //$NON-NLS-1$
+				getString("_UI_PropertyDescriptor_description", "_UI_TableOfFigures_tofTitle_feature", "_UI_TableOfFigures_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				DocumentStructureTemplatePackage.Literals.TABLE_OF_FIGURES__TOF_TITLE,
+				true,
+				false,
+				false,
+				ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				null,
+				null));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean hasChildren(Object object) {
+		return hasChildren(object, true);
+	}
+
+	/**
+	 * This returns TableOfFigures.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TableOfFigures")); //$NON-NLS-1$
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TableOfFigures) object).getTofTitle();
+		return label == null || label.length() == 0 ? getString("_UI_TableOfFigures_type") : //$NON-NLS-1$
+				getString("_UI_TableOfFigures_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(TableOfFigures.class)) {
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender) adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TextDocumentTemplateItemProvider.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TextDocumentTemplateItemProvider.java
index 19c2085..a00acd3 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TextDocumentTemplateItemProvider.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.edit/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/provider/TextDocumentTemplateItemProvider.java
@@ -373,6 +373,9 @@
 
 		newChildDescriptors.add(createChildParameter(DocumentStructureTemplatePackage.Literals.TEXT_DOCUMENT_TEMPLATE__DOCUMENT_PART,
 				DocumentStructureTemplateFactory.eINSTANCE.createBody()));
+
+		newChildDescriptors.add(createChildParameter(DocumentStructureTemplatePackage.Literals.TEXT_DOCUMENT_TEMPLATE__DOCUMENT_PART,
+				DocumentStructureTemplateFactory.eINSTANCE.createTableOfFigures()));
 	}
 
 	/**
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.ecore b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.ecore
index c5eb7df..6e4d8f0 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.ecore
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.ecore
@@ -77,9 +77,16 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DocumentPart" abstract="true" interface="true"/>
   <eClassifiers xsi:type="ecore:EClass" name="TableOfContents" eSuperTypes="#//DocumentPart">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This element allows to declare that the generated document will contain a Table of Contents."/>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="tocTitle" ordered="false"
         lowerBound="1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
-        defaultValueLiteral="Table Of Contents"/>
+        defaultValueLiteral="Table Of Contents">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This field allows to define the custom title for the table of contents."/>
+      </eAnnotations>
+    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Body" eSuperTypes="#//DocumentPart">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -511,4 +518,16 @@
       <details key="documentation" value="This element allows to insert the content of an existing file into the generated file."/>
     </eAnnotations>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TableOfFigures" eSuperTypes="#//DocumentPart">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This element allows to declare that the generated document will contain a Table of Figures."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tofTitle" ordered="false"
+        lowerBound="1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
+        defaultValueLiteral="Table Of Figures">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This field allows to define the custom title for the table of figures."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.genmodel b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.genmodel
index dc1f37e..3f5f59a 100644
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.genmodel
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.genmodel
@@ -238,5 +238,8 @@
           createChild="true" ecoreFeature="ecore:EReference documentstructuretemplate.ecore#//TreeListView/rootListItemTemplate"/>
     </genClasses>
     <genClasses xsi:type="genmodel:GenClass" ecoreClass="documentstructuretemplate.ecore#//InsertFileTemplate"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="documentstructuretemplate.ecore#//TableOfFigures">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute documentstructuretemplate.ecore#//TableOfFigures/tofTitle"/>
+    </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.notation b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.notation
index 9363ef8..051adbe 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.notation
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.notation
@@ -171,7 +171,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXFOYznLEem5-oyJMXJtFA"/>
       </children>
       <element xmi:type="uml:Interface" href="documentstructuretemplate.uml#_zXDZIDnLEem5-oyJMXJtFA"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXFOUTnLEem5-oyJMXJtFA" x="-120" y="20" width="341" height="161"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXFOUTnLEem5-oyJMXJtFA" x="-320" y="20" width="541" height="161"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_xklxcDnVEem5-oyJMXJtFA" type="Class_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_xkmYgDnVEem5-oyJMXJtFA" type="Class_NameLabel"/>
@@ -491,6 +491,36 @@
       <element xmi:type="uml:Interface" href="pathmap://EXPRESSIONS//expressions.uml#_P-MkYBVaEee_D4EhwjboOQ"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VzABUY29EemcPPjkzx166Q" x="1320" y="80" width="221"/>
     </children>
+    <children xmi:type="notation:Shape" xmi:id="_Zany8Oj8EemWx6IYXety0w" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZaugoOj8EemWx6IYXety0w" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zaugoej8EemWx6IYXety0w" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zaugouj8EemWx6IYXety0w" y="15"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Zaugo-j8EemWx6IYXety0w" type="Class_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_tBOmIOj8EemWx6IYXety0w" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="documentstructuretemplate.uml#_tmYT4Oj3Eem6Q8pIItgtwQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_tBOmIej8EemWx6IYXety0w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZaugpOj8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zaugpej8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Zaugpuj8EemWx6IYXety0w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zaugp-j8EemWx6IYXety0w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZaugqOj8EemWx6IYXety0w" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Zaugqej8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zaugquj8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Zaugq-j8EemWx6IYXety0w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZaugrOj8EemWx6IYXety0w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Zaugrej8EemWx6IYXety0w" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Zaugruj8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zaugr-j8EemWx6IYXety0w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZaugsOj8EemWx6IYXety0w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zaugsej8EemWx6IYXety0w"/>
+      </children>
+      <element xmi:type="uml:Class" href="documentstructuretemplate.uml#_iAWr8Oj3Eem6Q8pIItgtwQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zany8ej8EemWx6IYXety0w" x="-320" y="280" width="141" height="141"/>
+    </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_hHH6sR5QEemmq_cjeiIGww" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_hHH6sh5QEemmq_cjeiIGww"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_hHH6sx5QEemmq_cjeiIGww" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
@@ -545,7 +575,7 @@
       <element xmi:type="uml:Association" href="documentstructuretemplate.uml#_EPiZMDnMEem5-oyJMXJtFA"/>
       <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EQDWkjnMEem5-oyJMXJtFA" points="[20, 179, -643984, -643984]$[20, 260, -643984, -643984]"/>
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ERC1EDnMEem5-oyJMXJtFA" id="(0.46920821114369504,1.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ERC1ETnMEem5-oyJMXJtFA" id="(0.46920821114369504,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ERC1ETnMEem5-oyJMXJtFA" id="(0.6654343807763401,0.0)"/>
     </edges>
     <edges xmi:type="notation:Connector" xmi:id="_Om-uIDnMEem5-oyJMXJtFA" type="InterfaceRealization_Edge" source="_f06PMDnLEem5-oyJMXJtFA" target="_zXFOUDnLEem5-oyJMXJtFA">
       <children xmi:type="notation:DecorationNode" xmi:id="_Om-uIznMEem5-oyJMXJtFA" type="InterfaceRealization_StereotypeLabel">
@@ -558,7 +588,7 @@
       <element xmi:type="uml:InterfaceRealization" href="documentstructuretemplate.uml#_Omg0EDnMEem5-oyJMXJtFA"/>
       <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Om-uIjnMEem5-oyJMXJtFA" points="[-40, 280, -643984, -643984]$[-40, 181, -643984, -643984]"/>
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_On4tEDnMEem5-oyJMXJtFA" id="(0.5673758865248227,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_On5UIDnMEem5-oyJMXJtFA" id="(0.23460410557184752,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_On5UIDnMEem5-oyJMXJtFA" id="(0.5175600739371534,1.0)"/>
     </edges>
     <edges xmi:type="notation:Connector" xmi:id="_PHpyQDnMEem5-oyJMXJtFA" type="InterfaceRealization_Edge" source="_xzXY0DnLEem5-oyJMXJtFA" target="_zXFOUDnLEem5-oyJMXJtFA">
       <children xmi:type="notation:DecorationNode" xmi:id="_PHpyQznMEem5-oyJMXJtFA" type="InterfaceRealization_StereotypeLabel">
@@ -571,7 +601,7 @@
       <element xmi:type="uml:InterfaceRealization" href="documentstructuretemplate.uml#_PHIN0DnMEem5-oyJMXJtFA"/>
       <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PHpyQjnMEem5-oyJMXJtFA" points="[140, 280, -643984, -643984]$[140, 181, -643984, -643984]"/>
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PIpQwDnMEem5-oyJMXJtFA" id="(0.4413793103448276,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PIpQwTnMEem5-oyJMXJtFA" id="(0.7624633431085044,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PIpQwTnMEem5-oyJMXJtFA" id="(0.8502772643253235,1.0)"/>
     </edges>
     <edges xmi:type="notation:Connector" xmi:id="_3u4wgDnVEem5-oyJMXJtFA" type="Association_Edge" source="_xklxcDnVEem5-oyJMXJtFA" target="_uf2PUB5QEemmq_cjeiIGww">
       <children xmi:type="notation:DecorationNode" xmi:id="_3u5XkDnVEem5-oyJMXJtFA" type="Association_StereotypeLabel">
@@ -845,6 +875,21 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZUmf0I29EemcPPjkzx166Q" id="(1.0,0.26666666666666666)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZUmf0Y29EemcPPjkzx166Q" id="(0.0,0.38461538461538464)"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_q02OIOj8EemWx6IYXety0w" type="InterfaceRealization_Edge" source="_Zany8Oj8EemWx6IYXety0w" target="_zXFOUDnLEem5-oyJMXJtFA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_q021Muj8EemWx6IYXety0w" type="InterfaceRealization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_rYGsMOj8EemWx6IYXety0w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_q021M-j8EemWx6IYXety0w" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_q03cQOj8EemWx6IYXety0w" type="InterfaceRealization_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_rYuXQOj8EemWx6IYXety0w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_q03cQej8EemWx6IYXety0w" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_q021MOj8EemWx6IYXety0w"/>
+      <element xmi:type="uml:InterfaceRealization" href="documentstructuretemplate.uml#_JsEMMOj4Eem6Q8pIItgtwQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q021Mej8EemWx6IYXety0w" points="[-260, 280, -643984, -643984]$[-260, 181, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rXb90Oj8EemWx6IYXety0w" id="(0.425531914893617,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rXb90ej8EemWx6IYXety0w" id="(0.11090573012939002,1.0)"/>
+    </edges>
   </notation:Diagram>
   <css:StyleSheetReference xmi:id="_MmlU4B-7EempQZhnl_zCWg" path="/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/custom.css"/>
   <notation:Diagram xmi:id="_7sXNAFYAEemKJasCEBKPhQ" type="PapyrusUMLClassDiagram" name="BodyPartTemplateDiagram" measurementUnit="Pixel">
@@ -2944,7 +2989,7 @@
       </children>
       <styles xmi:type="notation:FontStyle" xmi:id="_qn-kYZmrEemLBLfP25oZSA"/>
       <element xmi:type="uml:Association" href="documentstructuretemplate.uml#_omOJ8FX9EemKJasCEBKPhQ"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qn-kYpmrEemLBLfP25oZSA" points="[20, 80, -643984, -643984]$[240, 80, -643984, -643984]"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qn-kYpmrEemLBLfP25oZSA" points="[-20, 60, -643984, -643984]$[120, 60, -643984, -643984]$[120, 80, -643984, -643984]$[240, 80, -643984, -643984]"/>
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1jmkcJmrEemLBLfP25oZSA" id="(1.0,0.2)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1jmkcZmrEemLBLfP25oZSA" id="(0.0,0.19801980198019803)"/>
     </edges>
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.uml b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.uml
index 74dff99..5c58078 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.uml
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/model/documentstructuretemplate.uml
@@ -85,7 +85,13 @@
       <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_nWOeEB5MEemmq_cjeiIGww" client="_tLqTYB17Eem3fboELVTtYQ" supplier="_pmiT0B5MEemmq_cjeiIGww" contract="_pmiT0B5MEemmq_cjeiIGww"/>
     </packagedElement>
     <packagedElement xmi:type="uml:Class" xmi:id="_f03L4DnLEem5-oyJMXJtFA" name="TableOfContents">
+      <ownedComment xmi:type="uml:Comment" xmi:id="__DSPoOj3Eem6Q8pIItgtwQ" annotatedElement="_f03L4DnLEem5-oyJMXJtFA">
+        <body>This element allows to declare that the generated document will contain a Table of Contents.</body>
+      </ownedComment>
       <ownedAttribute xmi:type="uml:Property" xmi:id="_ikXfEDnLEem5-oyJMXJtFA" name="tocTitle">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_DACZEOj4Eem6Q8pIItgtwQ" annotatedElement="_ikXfEDnLEem5-oyJMXJtFA">
+          <body>This field allows to define the custom title for the table of contents.</body>
+        </ownedComment>
         <type xmi:type="uml:PrimitiveType" href="pathmap://ECORE_METAMODEL_LIBRARY/Ecore.uml#_SeWkisX_EduPJbEsMYXjUQ"/>
         <defaultValue xmi:type="uml:LiteralString" xmi:id="_o4csQDnLEem5-oyJMXJtFA" value="Table Of Contents"/>
       </ownedAttribute>
@@ -823,6 +829,19 @@
       <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_eKveUJaPEem5SfdtnxxoKw" client="_TMKQ4JaPEem5SfdtnxxoKw" supplier="_e0vMUFX-EemKJasCEBKPhQ" contract="_e0vMUFX-EemKJasCEBKPhQ"/>
       <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_e32b8JaPEem5SfdtnxxoKw" client="_TMKQ4JaPEem5SfdtnxxoKw" supplier="_R99HIFX-EemKJasCEBKPhQ" contract="_R99HIFX-EemKJasCEBKPhQ"/>
     </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_iAWr8Oj3Eem6Q8pIItgtwQ" name="TableOfFigures">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_9VR1sOj3Eem6Q8pIItgtwQ" annotatedElement="_iAWr8Oj3Eem6Q8pIItgtwQ">
+        <body>This element allows to declare that the generated document will contain a Table of Figures.</body>
+      </ownedComment>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_tmYT4Oj3Eem6Q8pIItgtwQ" name="tofTitle">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_4sGrIOj3Eem6Q8pIItgtwQ" annotatedElement="_tmYT4Oj3Eem6Q8pIItgtwQ">
+          <body>This field allows to define the custom title for the table of figures.</body>
+        </ownedComment>
+        <type xmi:type="uml:PrimitiveType" href="pathmap://ECORE_METAMODEL_LIBRARY/Ecore.uml#_SeWkisX_EduPJbEsMYXjUQ"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_tmYT4ej3Eem6Q8pIItgtwQ" value="Table Of Figures"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_JsEMMOj4Eem6Q8pIItgtwQ" client="_iAWr8Oj3Eem6Q8pIItgtwQ" supplier="_zXDZIDnLEem5-oyJMXJtFA" contract="_zXDZIDnLEem5-oyJMXJtFA"/>
+    </packagedElement>
     <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_Dwr3IB2KEemmq_cjeiIGww">
       <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DwseMB2KEemmq_cjeiIGww" source="http://www.eclipse.org/uml2/2.0.0/UML">
         <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplateFactory.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplateFactory.java
index f9bf010..437614e 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplateFactory.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplateFactory.java
@@ -165,6 +165,16 @@
 	InsertFileTemplate createInsertFileTemplate();
 
 	/**
+	 * Returns a new object of class '<em>Table Of Figures</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Table Of Figures</em>'.
+	 * @generated
+	 */
+	TableOfFigures createTableOfFigures();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplatePackage.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplatePackage.java
index eb77e45..793367e 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplatePackage.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/DocumentStructureTemplatePackage.java
@@ -3273,6 +3273,47 @@
 	int INSERT_FILE_TEMPLATE_OPERATION_COUNT = BuiltInTypesPackage.DEFAULT_FILE_REFERENCE_OPERATION_COUNT + 2;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.TableOfFiguresImpl <em>Table Of Figures</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.TableOfFiguresImpl
+	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.DocumentStructureTemplatePackageImpl#getTableOfFigures()
+	 * @generated
+	 */
+	int TABLE_OF_FIGURES = 36;
+
+	/**
+	 * The feature id for the '<em><b>Tof Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_OF_FIGURES__TOF_TITLE = DOCUMENT_PART_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Table Of Figures</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_OF_FIGURES_FEATURE_COUNT = DOCUMENT_PART_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Table Of Figures</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TABLE_OF_FIGURES_OPERATION_COUNT = DOCUMENT_PART_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.EClassFilterBehavior <em>EClass Filter Behavior</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -3281,7 +3322,7 @@
 	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.DocumentStructureTemplatePackageImpl#getEClassFilterBehavior()
 	 * @generated
 	 */
-	int ECLASS_FILTER_BEHAVIOR = 36;
+	int ECLASS_FILTER_BEHAVIOR = 37;
 
 
 	/**
@@ -4311,6 +4352,29 @@
 	EClass getInsertFileTemplate();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures <em>Table Of Figures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Table Of Figures</em>'.
+	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures
+	 * @generated
+	 */
+	EClass getTableOfFigures();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures#getTofTitle <em>Tof Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Tof Title</em>'.
+	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures#getTofTitle()
+	 * @see #getTableOfFigures()
+	 * @generated
+	 */
+	EAttribute getTableOfFigures_TofTitle();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.EClassFilterBehavior <em>EClass Filter Behavior</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -5229,6 +5293,26 @@
 		EClass INSERT_FILE_TEMPLATE = eINSTANCE.getInsertFileTemplate();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.TableOfFiguresImpl <em>Table Of Figures</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.TableOfFiguresImpl
+		 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.DocumentStructureTemplatePackageImpl#getTableOfFigures()
+		 * @generated
+		 */
+		EClass TABLE_OF_FIGURES = eINSTANCE.getTableOfFigures();
+
+		/**
+		 * The meta object literal for the '<em><b>Tof Title</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute TABLE_OF_FIGURES__TOF_TITLE = eINSTANCE.getTableOfFigures_TofTitle();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.EClassFilterBehavior <em>EClass Filter Behavior</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfContents.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfContents.java
index 26520e3..639269b 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfContents.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfContents.java
@@ -19,6 +19,10 @@
  * A representation of the model object '<em><b>Table Of Contents</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <!-- begin-model-doc -->
+ * This element allows to declare that the generated document will contain a Table of Contents.
+ * <!-- end-model-doc -->
+ *
  * <p>
  * The following features are supported:
  * </p>
@@ -40,6 +44,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This field allows to define the custom title for the table of contents.
+	 * <!-- end-model-doc -->
 	 *
 	 * @return the value of the '<em>Toc Title</em>' attribute.
 	 * @see #setTocTitle(String)
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfFigures.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfFigures.java
new file mode 100755
index 0000000..6342a47
--- /dev/null
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/TableOfFigures.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.model2doc.emf.documentstructuretemplate;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Table Of Figures</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * This element allows to declare that the generated document will contain a Table of Figures.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures#getTofTitle <em>Tof Title</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentStructureTemplatePackage#getTableOfFigures()
+ * @model
+ * @generated
+ */
+public interface TableOfFigures extends DocumentPart {
+	/**
+	 * Returns the value of the '<em><b>Tof Title</b></em>' attribute.
+	 * The default value is <code>"Table Of Figures"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This field allows to define the custom title for the table of figures.
+	 * <!-- end-model-doc -->
+	 *
+	 * @return the value of the '<em>Tof Title</em>' attribute.
+	 * @see #setTofTitle(String)
+	 * @see org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentStructureTemplatePackage#getTableOfFigures_TofTitle()
+	 * @model default="Table Of Figures" required="true" ordered="false"
+	 * @generated
+	 */
+	String getTofTitle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures#getTofTitle <em>Tof Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *                  the new value of the '<em>Tof Title</em>' attribute.
+	 * @see #getTofTitle()
+	 * @generated
+	 */
+	void setTofTitle(String value);
+
+} // TableOfFigures
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplateFactoryImpl.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplateFactoryImpl.java
index 4ae3fbe..d9406a9 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplateFactoryImpl.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplateFactoryImpl.java
@@ -97,6 +97,8 @@
 			return createTreeListView();
 		case DocumentStructureTemplatePackage.INSERT_FILE_TEMPLATE:
 			return createInsertFileTemplate();
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES:
+			return createTableOfFigures();
 		default:
 			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
@@ -296,6 +298,18 @@
 	 *
 	 * @generated
 	 */
+	@Override
+	public TableOfFigures createTableOfFigures() {
+		TableOfFiguresImpl tableOfFigures = new TableOfFiguresImpl();
+		return tableOfFigures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
 	public EClassFilterBehavior createEClassFilterBehaviorFromString(EDataType eDataType, String initialValue) {
 		EClassFilterBehavior result = EClassFilterBehavior.get(initialValue);
 		if (result == null)
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplatePackageImpl.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplatePackageImpl.java
index 8d9e57f..1be82c9 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplatePackageImpl.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/DocumentStructureTemplatePackageImpl.java
@@ -66,6 +66,7 @@
 import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.ITemplatePartView;
 import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.InsertFileTemplate;
 import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfContents;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures;
 import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TextDocumentTemplate;
 import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TreeListView;
 
@@ -371,6 +372,14 @@
 	 *
 	 * @generated
 	 */
+	private EClass tableOfFiguresEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
 	private EEnum eClassFilterBehaviorEEnum = null;
 
 	/**
@@ -1446,6 +1455,28 @@
 	 * @generated
 	 */
 	@Override
+	public EClass getTableOfFigures() {
+		return tableOfFiguresEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTableOfFigures_TofTitle() {
+		return (EAttribute) tableOfFiguresEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
 	public EEnum getEClassFilterBehavior() {
 		return eClassFilterBehaviorEEnum;
 	}
@@ -1610,6 +1641,9 @@
 
 		insertFileTemplateEClass = createEClass(INSERT_FILE_TEMPLATE);
 
+		tableOfFiguresEClass = createEClass(TABLE_OF_FIGURES);
+		createEAttribute(tableOfFiguresEClass, TABLE_OF_FIGURES__TOF_TITLE);
+
 		// Create enums
 		eClassFilterBehaviorEEnum = createEEnum(ECLASS_FILTER_BEHAVIOR);
 	}
@@ -1689,6 +1723,7 @@
 		insertFileTemplateEClass.getESuperTypes().add(theBuiltInTypesPackage.getDefaultFileReference());
 		insertFileTemplateEClass.getESuperTypes().add(this.getILeafSubBodyPartTemplate());
 		insertFileTemplateEClass.getESuperTypes().add(this.getILeafBodyPartTemplate());
+		tableOfFiguresEClass.getESuperTypes().add(this.getDocumentPart());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(documentTemplateEClass, DocumentTemplate.class, "DocumentTemplate", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
@@ -1870,6 +1905,9 @@
 
 		initEClass(insertFileTemplateEClass, InsertFileTemplate.class, "InsertFileTemplate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 
+		initEClass(tableOfFiguresEClass, TableOfFigures.class, "TableOfFigures", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTableOfFigures_TofTitle(), theEcorePackage.getEString(), "tofTitle", "Table Of Figures", 1, 1, TableOfFigures.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
 		// Initialize enums and add enum literals
 		initEEnum(eClassFilterBehaviorEEnum, EClassFilterBehavior.class, "EClassFilterBehavior"); //$NON-NLS-1$
 		addEEnumLiteral(eClassFilterBehaviorEEnum, EClassFilterBehavior.TYPE_OF);
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/TableOfFiguresImpl.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/TableOfFiguresImpl.java
new file mode 100755
index 0000000..e222618
--- /dev/null
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/impl/TableOfFiguresImpl.java
@@ -0,0 +1,190 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *
+ *  Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ */
+package org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentStructureTemplatePackage;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table Of Figures</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.impl.TableOfFiguresImpl#getTofTitle <em>Tof Title</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TableOfFiguresImpl extends MinimalEObjectImpl.Container implements TableOfFigures {
+	/**
+	 * The default value of the '{@link #getTofTitle() <em>Tof Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTofTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TOF_TITLE_EDEFAULT = "Table Of Figures"; //$NON-NLS-1$
+
+	/**
+	 * The cached value of the '{@link #getTofTitle() <em>Tof Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTofTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected String tofTitle = TOF_TITLE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TableOfFiguresImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DocumentStructureTemplatePackage.Literals.TABLE_OF_FIGURES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getTofTitle() {
+		return tofTitle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setTofTitle(String newTofTitle) {
+		String oldTofTitle = tofTitle;
+		tofTitle = newTofTitle;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE, oldTofTitle, tofTitle));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE:
+			return getTofTitle();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE:
+			setTofTitle((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE:
+			setTofTitle(TOF_TITLE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES__TOF_TITLE:
+			return TOF_TITLE_EDEFAULT == null ? tofTitle != null : !TOF_TITLE_EDEFAULT.equals(tofTitle);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (tofTitle: "); //$NON-NLS-1$
+		result.append(tofTitle);
+		result.append(')');
+		return result.toString();
+	}
+
+} // TableOfFiguresImpl
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateAdapterFactory.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateAdapterFactory.java
index 5c34030..2ecda52 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateAdapterFactory.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateAdapterFactory.java
@@ -265,6 +265,11 @@
 		}
 
 		@Override
+		public Adapter caseTableOfFigures(TableOfFigures object) {
+			return createTableOfFiguresAdapter();
+		}
+
+		@Override
 		public Adapter caseIFileReference(IFileReference object) {
 			return createIFileReferenceAdapter();
 		}
@@ -837,6 +842,21 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures <em>Table Of Figures</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.papyrus.model2doc.emf.documentstructuretemplate.TableOfFigures
+	 * @generated
+	 */
+	public Adapter createTableOfFiguresAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.model2doc.core.builtintypes.IFileReference <em>IFile Reference</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateSwitch.java b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateSwitch.java
index 409dcfc..be6a14a 100755
--- a/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateSwitch.java
+++ b/plugins/emf/org.eclipse.papyrus.model2doc.emf.documentstructuretemplate/src-gen/org/eclipse/papyrus/model2doc/emf/documentstructuretemplate/util/DocumentStructureTemplateSwitch.java
@@ -571,6 +571,17 @@
 			}
 			return result;
 		}
+		case DocumentStructureTemplatePackage.TABLE_OF_FIGURES: {
+			TableOfFigures tableOfFigures = (TableOfFigures) theEObject;
+			T result = caseTableOfFigures(tableOfFigures);
+			if (result == null) {
+				result = caseDocumentPart(tableOfFigures);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
 		default:
 			return defaultCase(theEObject);
 		}
@@ -1189,6 +1200,23 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Table Of Figures</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>Table Of Figures</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTableOfFigures(TableOfFigures object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>IFile Reference</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;