Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcdumoulin2009-05-25 10:20:23 +0000
committercdumoulin2009-05-25 10:20:23 +0000
commit14d2c55e421ef291e121cea4ff71124e011aba8f (patch)
tree21c5212c871df890c33fa2b429766cd210275263
parent13cd58432239dd44abd2e7331316c23a4a038e24 (diff)
downloadorg.eclipse.papyrus-14d2c55e421ef291e121cea4ff71124e011aba8f.tar.gz
org.eclipse.papyrus-14d2c55e421ef291e121cea4ff71124e011aba8f.tar.xz
org.eclipse.papyrus-14d2c55e421ef291e121cea4ff71124e011aba8f.zip
NEW - bug 268775: [Sash Editor] Improve and finalize plugin
https://bugs.eclipse.org/bugs/show_bug.cgi?id=268775 Add Di EMF model for the ContentProvider based on EMF
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/.classpath7
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/.project28
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/META-INF/MANIFEST.MF15
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/antBuild.xml124
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/build.properties14
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/model/di.ecore123
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.di2790
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.genmodel128
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.uml371
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.properties8
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.xml20
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java74
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java48
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java145
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java87
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java91
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractNode.java22
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPage.java54
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPanel.java82
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiFactory.java127
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiPackage.java1296
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageList.java62
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageRef.java91
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Position.java81
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashModel.java124
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashPanel.java97
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashWindowsMngr.java81
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Size.java81
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/TabFolder.java70
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Window.java109
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractNodeImpl.java45
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPageImpl.java167
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPanelImpl.java260
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiFactoryImpl.java313
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiPackageImpl.java760
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java182
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java277
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PositionImpl.java221
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java347
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashPanelImpl.java279
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashWindowsMngrImpl.java247
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SizeImpl.java221
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java216
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/WindowImpl.java317
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiAdapterFactory.java322
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiSwitch.java367
-rw-r--r--plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java91
47 files changed, 9082 insertions, 0 deletions
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/.classpath b/plugins/core/org.eclipse.papyrus.sasheditor.di/.classpath
new file mode 100644
index 00000000000..45f024e850e
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/.project b/plugins/core/org.eclipse.papyrus.sasheditor.di/.project
new file mode 100644
index 00000000000..5c2ab4a43c7
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.sasheditor.di</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/META-INF/MANIFEST.MF b/plugins/core/org.eclipse.papyrus.sasheditor.di/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b2d5873a530
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.sasheditor.di;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.papyrus.sashwindows.di,
+ org.eclipse.papyrus.sashwindows.di.impl,
+ org.eclipse.papyrus.sashwindows.di.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/antBuild.xml b/plugins/core/org.eclipse.papyrus.sasheditor.di/antBuild.xml
new file mode 100644
index 00000000000..35ad5315f91
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/antBuild.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+
+<project default="copy-custom-code" basedir=".">
+
+ <property name="srcdir" value="src" />
+ <property name="sparedir" value="src-spare" />
+ <property name="plugin.default.name" value="org.eclipse.papyrus.sasheditor.di" />
+ <property name="plugin.dir" value="../${plugin.default.name}" />
+ <property name="edit.plugin.dir" value="../${plugin.default.name}.edit" />
+ <property name="editor.plugin.dir" value="../${plugin.default.name}.editor" />
+ <property name="tests.plugin.dir" value="../${plugin.default.name}.tests" />
+
+ <!-- -->
+ <target name="init" description="Create the requested directories">
+ <mkdir dir="${sparedir}"/>
+ </target>
+
+ <!-- -->
+ <target name="clean-all" description="clean all" depends="clean-dependent-plugins, clean">
+ <delete>
+ <fileset dir="${srcdir}">
+ <!-- <include name="**/*.java" />-->
+ </fileset>
+ </delete>
+ </target>
+
+ <!-- -->
+ <target name="clean" description="clean src dir">
+ <delete failonerror="false">
+ <fileset dir="${srcdir}">
+ <!-- <include name="**/*.java" />-->
+ </fileset>
+ <fileset dir="${.}">
+ <include name="META-INF/MANIFEST.MF" />
+ </fileset>
+ </delete>
+ </target>
+
+ <!-- -->
+ <target name="clean-dependent-plugins" description="clean editor and edit plugins">
+ <delete failonerror="false">
+ <fileset dir="${edit.plugin.dir}/src">
+ <!-- <include name="**/*.java" />-->
+ </fileset>
+ <fileset dir="${edit.plugin.dir}">
+ <include name="plugin.xml" />
+ <include name="META-INF/MANIFEST.MF" />
+ </fileset>
+ </delete>
+ <delete failonerror="false">
+ <fileset dir="${editor.plugin.dir}/src">
+ <include name="**/*.java" />
+ </fileset>
+ <fileset dir="${edit.plugin.dir}">
+ <include name="plugin.xml" />
+ <include name="META-INF/MANIFEST.MF" />
+ </fileset>
+ </delete>
+ <delete failonerror="false">
+ <fileset dir="${tests.plugin.dir}/src">
+ <include name="**/*.java" />
+ </fileset>
+ <fileset dir="${edit.plugin.dir}">
+ <include name="plugin.xml" />
+ <include name="META-INF/MANIFEST.MF" />
+ </fileset>
+ </delete>
+ </target>
+
+ <!-- -->
+ <target name="copy-custom-code" description="copy custom code to src dir">
+ <copy todir="src" overwrite="true" failonerror="false">
+ <fileset dir="${sparedir}">
+ <include name="**/*.java" />
+ </fileset>
+ </copy>
+ </target>
+
+ <!-- -->
+ <target name="copy-dependant-custom-code" description="copy custom code of dependant plugins">
+ <copy todir="${editor.plugin.dir}/src" overwrite="true" failonerror="false">
+ <fileset dir="${editor.plugin.dir}/${sparedir}">
+ <include name="**/*.java" />
+ </fileset>
+ </copy>
+ <copy todir="${edit.plugin.dir}/src" overwrite="true" failonerror="false">
+ <fileset dir="${edit.plugin.dir}/${sparedir}">
+ <include name="**/*.java" />
+ </fileset>
+ </copy>
+ <copy todir="${tests.plugin.dir}/src" overwrite="true" failonerror="false">
+ <fileset dir="${tests.plugin.dir}/${sparedir}">
+ <include name="**/*.java" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="revert" description="clean all and copy custom code back" depends="clean-all, copy-custom-code, copy-dependant-custom-code">
+ <echo message="\n ** Don't forget to refresh (F5) modified plugins. ** \n"/>
+ </target>
+
+ <!-- Do refresh (F5) on specified folders.
+ This task can be launched only inside a running Eclipse.
+ To run properly, it require that ant run in the same JVM than Eclipse.
+ Change setting in Run As ... -> JRE -->
+ <target name="refresh" if="eclipse.running" description="Refresh all plugins.">
+ <eclipse.convertPath fileSystemPath="${plugin.dir}" property="resourcePath"/>
+ <echo message="\n ** Refresh resource ${resourcePath} ** \n"/>
+ <eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
+
+ <eclipse.convertPath fileSystemPath="${edit.plugin.dir}" property="resourcePath"/>
+ <echo message="\n ** Refresh resource ${resourcePath} ** \n"/>
+ <eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
+
+ <eclipse.convertPath fileSystemPath="${editor.plugin.dir}" property="resourcePath"/>
+ <echo message="\n ** Refresh resource ${resourcePath} ** \n"/>
+ <eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
+
+ <eclipse.convertPath fileSystemPath="${tests.plugin.dir}" property="resourcePath"/>
+ <echo message="\n ** Refresh resource ${resourcePath} ** \n"/>
+ <eclipse.refreshLocal resource="${resourcePath}" depth="infinite"/>
+ </target>
+
+</project>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/build.properties b/plugins/core/org.eclipse.papyrus.sasheditor.di/build.properties
new file mode 100644
index 00000000000..1a3a48b2220
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/build.properties
@@ -0,0 +1,14 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/model/di.ecore b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/di.ecore
new file mode 100644
index 00000000000..8d460a07dfb
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/di.ecore
@@ -0,0 +1,123 @@
+<?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="di"
+ nsURI="http://www.eclipse.org/papyrus/0.7.0/sashdi" nsPrefix="di">
+ <eClassifiers xsi:type="ecore:EClass" name="SashModel">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Root node of the model describing the sash windows, panels and pages.&#xD;&#xA;A SashModel can have several windows containing panels separated by sashes. Such panels can be folders &#xD;&#xA;containing pages."/>
+ </eAnnotations>
+ <eOperations name="addPage" ordered="false" lowerBound="1">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eOperations name="removePage" ordered="false" lowerBound="1">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eOperations name="lookupPage" ordered="false" lowerBound="1" eType="#//PageRef">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Lookup the pageRef identified by the pageIdentifier.&#xD;&#xA;Return the pageRef or null if not found.&#xD;&#xA;Lookup in the entire SashModel structure."/>
+ </eAnnotations>
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eOperations name="removePage" ordered="false" lowerBound="1">
+ <eParameters name="pageIndex" ordered="false" lowerBound="1" eType="#//int"/>
+ <eParameters name="parentFolder" ordered="false" lowerBound="1" eType="#//TabFolder"/>
+ </eOperations>
+ <eOperations name="movePage" ordered="false" lowerBound="1">
+ <eParameters name="srcParentFolder" ordered="false" lowerBound="1" eType="#//TabFolder"/>
+ <eParameters name="srcIndex" ordered="false" lowerBound="1" eType="#//int"/>
+ <eParameters name="targetParentFolder" ordered="false" lowerBound="1" eType="#//TabFolder"/>
+ <eParameters name="targetIndex" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="windows" ordered="false"
+ upperBound="-1" eType="#//Window" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="currentSelection" ordered="false"
+ unique="false" lowerBound="1" eType="#//TabFolder"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Window" eSuperTypes="#//AbstractNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="panel" ordered="false"
+ lowerBound="1" eType="#//AbstractPanel" containment="true" eOpposite="#//AbstractPanel/window"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="position" ordered="false"
+ unique="false" lowerBound="1" eType="#//Position"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="size" ordered="false" unique="false"
+ lowerBound="1" eType="#//Size"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractNode" abstract="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractPanel" abstract="true" eSuperTypes="#//AbstractNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" ordered="false"
+ unique="false" lowerBound="1" eType="#//AbstractNode"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="window" ordered="false"
+ lowerBound="1" eType="#//Window" eOpposite="#//Window/panel"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Position">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" ordered="false" unique="false"
+ lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="int" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Size">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" ordered="false"
+ unique="false" lowerBound="1" eType="#//int"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" ordered="false"
+ unique="false" lowerBound="1" eType="#//int"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TabFolder" eSuperTypes="#//AbstractPanel">
+ <eOperations name="movePage" ordered="false" lowerBound="1">
+ <eParameters name="oldIndex" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eParameters name="newIndex" ordered="false" lowerBound="1" eType="#//int"/>
+ </eOperations>
+ <eOperations name="addPage" ordered="false" lowerBound="1">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eOperations name="removePage" ordered="false" lowerBound="1">
+ <eParameters name="pageIndex" ordered="false" lowerBound="1" eType="#//int"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
+ upperBound="-1" eType="#//PageRef" containment="true" eOpposite="#//PageRef/parent"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PageRef">
+ <eOperations name="isForIdentifier" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageIdentifier" ordered="false"
+ unique="false" lowerBound="1" eType="#//JavaObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" ordered="false"
+ unique="false" lowerBound="1" eType="#//TabFolder" eOpposite="#//TabFolder/children"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="JavaObject" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SashPanel" eSuperTypes="#//AbstractPanel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
+ lowerBound="2" upperBound="2" eType="#//AbstractPanel" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sashPosition" ordered="false"
+ unique="false" lowerBound="1" eType="#//Float">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Position of the sash in the panel. The position is in percent. The value should be between 0 and 100."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Float" instanceClassName="float"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractPage">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageIdentifier" ordered="false"
+ unique="false" lowerBound="1" eType="#//JavaObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PageList">
+ <eOperations name="addPage" ordered="false" lowerBound="1">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eOperations name="removePage" ordered="false" lowerBound="1">
+ <eParameters name="pageIdentifier" ordered="false" lowerBound="1" eType="#//JavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="availablePage" ordered="false"
+ upperBound="-1" eType="#//PageRef" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SashWindowsMngr">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="pageList" ordered="false"
+ unique="false" lowerBound="1" eType="#//PageList" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sashModel" ordered="false"
+ unique="false" lowerBound="1" eType="#//SashModel" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="boolean" instanceClassName="boolean"/>
+</ecore:EPackage>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.di2 b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.di2
new file mode 100644
index 00000000000..6729da89a4c
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.di2
@@ -0,0 +1,790 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di2="http://www.papyrusuml.org" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
+ <di2:Diagram isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="255:255:255" foregroundColor="255:255:255" backgroundColor="255:255:255" borderColor="255:255:255" position="0:0" name="DefaultDiagram">
+ <owner xsi:type="di2:Uml1SemanticModelBridge">
+ <element xsi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ </owner>
+ </di2:Diagram>
+ <di2:Diagram isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="255:255:255" foregroundColor="255:255:255" backgroundColor="255:255:255" borderColor="255:255:255" position="0:0" name="overview" type="ClassDiagram">
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="176:234" size="180:171">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_wdFgUEV4Ed6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="243:310" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_m7xPsEa4Ed6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="290:330" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_e9ojYEbXEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="281:344" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_q8zekEbsEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_UiIMMEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="356:285" graphEdge="/1/@contained.8"/>
+ <anchorage position="301:233" graphEdge="/1/@contained.18"/>
+ <anchorage position="175:278" graphEdge="/1/@contained.22"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="446:233" size="158:105">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_yWfIQESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_z0glcESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_Xa5wIEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="445:285" graphEdge="/1/@contained.8"/>
+ <anchorage position="604:285" graphEdge="/1/@contained.9"/>
+ <anchorage position="525:232" graphEdge="/1/@contained.13"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="693:231" size="151:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="760:331" graphEdge="/1/@contained.6"/>
+ <anchorage position="777:331" graphEdge="/1/@contained.7"/>
+ <anchorage position="692:285" graphEdge="/1/@contained.9"/>
+ <anchorage position="692:304" graphEdge="/1/@contained.10"/>
+ <anchorage position="742:230" graphEdge="/1/@contained.14"/>
+ <anchorage position="774:230" graphEdge="/1/@contained.15"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="619:437" size="178:119">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_8rplQESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_1nx64EbpEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_eE7YIEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="670:436" graphEdge="/1/@contained.6"/>
+ <anchorage position="632:436" graphEdge="/1/@contained.10"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="830:434" size="162:160">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_Cqh_oEViEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="940:489" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_oZu3cEWEEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="910:531" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_oEQBQEblEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_fbWYgEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="882:433" graphEdge="/1/@contained.7"/>
+ <anchorage position="992:486" graphEdge="/1/@contained.11"/>
+ <anchorage position="916:433" graphEdge="/1/@contained.18"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1082:433" size="211:120">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_WOKbgEVbEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1165:506" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_BxkKcEbaEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_h_HVwEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="1081:486" graphEdge="/1/@contained.11"/>
+ <anchorage position="1167:553" graphEdge="/1/@contained.16"/>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.3/@anchorage.0 /1/@contained.2/@anchorage.0">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:30" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Generalization" href="sashwindowsdi.uml#_7VZokEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.4/@anchorage.0 /1/@contained.2/@anchorage.1">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:30" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Generalization" href="sashwindowsdi.uml#_71vVgEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.0/@anchorage.0 /1/@contained.1/@anchorage.0">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-73:6" size="74:34">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-30:-21" size="22:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_9JomUEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.1/@anchorage.1 /1/@contained.2/@anchorage.2">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-64:-60" size="60:34">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-36:-19" size="22:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_94kv8EJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.3/@anchorage.1 /1/@contained.2/@anchorage.3">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:0" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-57:7" size="68:34">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-28:42" size="24:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-40:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="60:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#__CVNUEJVEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>632:304</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.4/@anchorage.1 /1/@contained.5/@anchorage.0">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-77:8" size="68:34">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-60:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_AM_CkEJWEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="551:67" size="138:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_86BAgEJWEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="621:167" graphEdge="/1/@contained.13"/>
+ <anchorage position="638:167" graphEdge="/1/@contained.14"/>
+ <anchorage position="689:121" graphEdge="/1/@contained.15"/>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.1/@anchorage.2 /1/@contained.12/@anchorage.0">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:30" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Generalization" href="sashwindowsdi.uml#_95DboEJWEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.2/@anchorage.4 /1/@contained.12/@anchorage.1">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:30" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Generalization" href="sashwindowsdi.uml#_-Ro6wEJWEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.2/@anchorage.5 /1/@contained.12/@anchorage.2">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:10" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="14:-24" size="58:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:10" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="14:17" size="24:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:-15" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:30" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_CHzUAEJXEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>774:120</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.19/@anchorage.0 /1/@contained.5/@anchorage.1">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="60:0" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="14:7" size="107:34">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-60:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-40:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="60:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_viyZUEJZEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>228:672</waypoints>
+ <waypoints>1167:672</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1297:32" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.0/@anchorage.1 /1/@contained.4/@anchorage.2">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="10:-28" size="123:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-35:-38" size="24:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_mT2jkEJkEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>301:34</waypoints>
+ <waypoints>914:35</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="174:500" size="182:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="221:434" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_i92ooEa4Ed6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="310:453" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Operation" href="sashwindowsdi.uml#_ocolgEa4Ed6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_b7a4cEMaEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="229:600" graphEdge="/1/@contained.16"/>
+ <anchorage position="173:577" graphEdge="/1/@contained.21"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="8:101" size="151:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_-9vywEMaEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <anchorage position="116:201" graphEdge="/1/@contained.22"/>
+ <anchorage position="59:201" graphEdge="/1/@contained.21"/>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.20/@anchorage.1 /1/@contained.19/@anchorage.1">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-79:-27" size="72:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:60" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="40:0" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_9k0bgEMbEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>58:578</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphEdge" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="0:0:0" backgroundColor="0:0:0" borderColor="0:0:0" anchor="/1/@contained.20/@anchorage.0 /1/@contained.0/@anchorage.2">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="0:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-48:-63" size="153:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:60" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="1166"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="-27:10" size="24:17">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" fontFamily="Arial" fontSize="9" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:-20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="40:0" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Association" href="sashwindowsdi.uml#_-EQwkEMbEd6kIY39uis5Uw"/>
+ </semanticModel>
+ <waypoints>116:278</waypoints>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1044:55" size="182:120">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_m9q14ESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_pmDNYESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_jc9vQESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1049:182" size="187:88">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_s1CR4ESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="166:157:183" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="custom_disp" value="252"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Property" href="sashwindowsdi.uml#_vnZr0ESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="20:20" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ </contained>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:Class" href="sashwindowsdi.uml#_lh4NUESDEd6kIY39uis5Uw"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1055:284" size="191:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="PropStereoDisplay" value="Ecore::EDataType"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_Hkk78EVbEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1329:290" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="PropStereoDisplay" value="Ecore::EDataType"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_A-BP8EVhEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1309:179" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="PropStereoDisplay" value="Ecore::EDataType"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <contained xsi:type="di2:GraphNode" isVisible="true" fontFamily="Arial" lineStyle="solid" fontColor="0:0:0" foregroundColor="248:249:214" backgroundColor="248:249:214" borderColor="157:124:47" position="1368:436" size="100:100">
+ <property key="STEREOTYPE_DISPLAY_LOCATION" value="Comment"/>
+ <property key="QUALIFIED_NAME_DEPTH" value="0"/>
+ <property key="PropStereoDisplay" value="Ecore::EDataType"/>
+ <semanticModel xsi:type="di2:Uml1SemanticModelBridge" presentation="TextStereotype">
+ <element xsi:type="uml:PrimitiveType" href="sashwindowsdi.uml#_SNSWAEbaEd6g-YgfS2DHrA"/>
+ </semanticModel>
+ </contained>
+ <owner xsi:type="di2:Uml1SemanticModelBridge">
+ <element xsi:type="uml:Model" href="sashwindowsdi.uml#_NuHhwEJVEd6kIY39uis5Uw"/>
+ </owner>
+ </di2:Diagram>
+</xmi:XMI>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.genmodel b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.genmodel
new file mode 100644
index 00000000000..50050f6461e
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.genmodel
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel" modelDirectory="/org.eclipse.papyrus.sasheditor.di/src"
+ modelPluginID="org.eclipse.papyrus.sasheditor.di" modelName="Sashwindowsdi" importerID="org.eclipse.uml2.uml.ecore.importer"
+ complianceLevel="5.0" copyrightFields="false">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ </genAnnotations>
+ <foreignModel>sashwindowsdi.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Di" basePackage="org.eclipse.papyrus.sashwindows"
+ disposableProviderFactory="true" ecorePackage="di.ecore#/">
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="di.ecore#//int"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="di.ecore#//JavaObject"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="di.ecore#//Float"/>
+ <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="di.ecore#//boolean"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//SashModel">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//SashModel/windows"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference di.ecore#//SashModel/currentSelection"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/addPage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/addPage/pageIdentifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/removePage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/removePage/pageIdentifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/lookupPage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/lookupPage/pageIdentifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/removePage.1">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/removePage.1/pageIndex"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/removePage.1/parentFolder"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//SashModel/movePage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/movePage/srcParentFolder"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/movePage/srcIndex"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/movePage/targetParentFolder"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//SashModel/movePage/targetIndex"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//Window">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//Window/panel"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference di.ecore#//Window/position"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference di.ecore#//Window/size"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="di.ecore#//AbstractNode"/>
+ <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="di.ecore#//AbstractPanel">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference di.ecore#//AbstractPanel/parent"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference di.ecore#//AbstractPanel/window"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//Position">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//Position/x"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//Position/y"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//Size">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//Size/width"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//Size/length"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//TabFolder">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//TabFolder/children"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//TabFolder/movePage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/movePage/oldIndex"/>
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/movePage/newIndex"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//TabFolder/addPage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/addPage/pageIdentifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//TabFolder/removePage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//TabFolder/removePage/pageIndex"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//PageRef">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//PageRef/pageIdentifier"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+ ecoreFeature="ecore:EReference di.ecore#//PageRef/parent"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//PageRef/isForIdentifier">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//PageRef/isForIdentifier/pageIdentifier"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//SashPanel">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//SashPanel/children"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//SashPanel/sashPosition"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//SashPanel/direction"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//AbstractPage">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute di.ecore#//AbstractPage/pageIdentifier"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//PageList">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//PageList/availablePage"/>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//PageList/addPage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//PageList/addPage/pageIdentifier"/>
+ </genOperations>
+ <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="di.ecore#//PageList/removePage">
+ <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="di.ecore#//PageList/removePage/pageIdentifier"/>
+ </genOperations>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="di.ecore#//SashWindowsMngr">
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//SashWindowsMngr/pageList"/>
+ <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+ createChild="true" ecoreFeature="ecore:EReference di.ecore#//SashWindowsMngr/sashModel"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.uml b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.uml
new file mode 100644
index 00000000000..211b49cd35b
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/model/sashwindowsdi.uml
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_NuHhwEJVEd6kIY39uis5Uw" name="di">
+ <packageImport xmi:id="_NuHhwUJVEd6kIY39uis5Uw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_F0PskN5qEd2dfviKlv9PXw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UiIMMEJVEd6kIY39uis5Uw" name="SashModel">
+ <ownedComment xmi:id="_UyqHoEUrEd6g-YgfS2DHrA" annotatedElement="_UiIMMEJVEd6kIY39uis5Uw">
+ <body>Root node of the model describing the sash windows, panels and pages.&#xD;
+A SashModel can have several windows containing panels separated by sashes. Such panels can be folders &#xD;
+containing pages.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_9KYNMEJVEd6kIY39uis5Uw" name="windows" type="_Xa5wIEJVEd6kIY39uis5Uw" aggregation="composite" association="_9JomUEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9KYNMkJVEd6kIY39uis5Uw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9KYNMUJVEd6kIY39uis5Uw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_mW0_EEJkEd6kIY39uis5Uw" name="currentSelection" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW0_EkJkEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW0_EUJkEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_wdFgUEV4Ed6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:id="_yMF_0EV4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N0EYUV4Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1N0EYEV4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1N0EYkV4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_m7xPsEa4Ed6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:id="_m7xPsUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m7xPska4Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m7xPs0a4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_m7xPtEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_e9ojYEbXEd6g-YgfS2DHrA" name="lookupPage">
+ <ownedComment xmi:id="_hi4uYEbXEd6g-YgfS2DHrA" annotatedElement="_e9ojYEbXEd6g-YgfS2DHrA">
+ <body>Lookup the pageRef identified by the pageIdentifier.&#xD;
+Return the pageRef or null if not found.&#xD;
+Lookup in the entire SashModel structure.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_e9ojYUbXEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e9ojYkbXEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e9ojY0bXEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_e9ojZEbXEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UTCMcEbYEd6g-YgfS2DHrA" name="null" type="_h_HVwEJVEd6kIY39uis5Uw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wg5LIEbYEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WgwBMEbYEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Wg5LIUbYEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_q8zekEbsEd6g-YgfS2DHrA" name="movePage">
+ <ownedParameter xmi:id="_sQ_qUEbsEd6g-YgfS2DHrA" name="srcParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdW9EEbsEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNzIEbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wdW9EUbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_q8zekUbsEd6g-YgfS2DHrA" name="srcIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zekkbsEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zek0bsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zelEbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wqxuAEbsEd6g-YgfS2DHrA" name="targetParentFolder" type="_fbWYgEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y6twUUbsEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y6twUEbsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_y6twUkbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_q8zelUbsEd6g-YgfS2DHrA" name="targetIndex">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q8zelkbsEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q8zel0bsEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q8zemEbsEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Xa5wIEJVEd6kIY39uis5Uw" name="Window">
+ <generalization xmi:id="_95DboEJWEd6kIY39uis5Uw" general="_86BAgEJWEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:id="_94t54EJVEd6kIY39uis5Uw" name="panel" type="_Zx2ZYEJVEd6kIY39uis5Uw" aggregation="composite" association="_94kv8EJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_943q4UJVEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_943q4EJVEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yWfIQESDEd6kIY39uis5Uw" name="position" visibility="public" type="_jc9vQESDEd6kIY39uis5Uw" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zpoyMUSDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zpoyMESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zpx8IESDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_z0glcESDEd6kIY39uis5Uw" name="size" visibility="public" type="_lh4NUESDEd6kIY39uis5Uw" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1I2iMESDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1ItYQESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1I2iMUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Zx2ZYEJVEd6kIY39uis5Uw" name="AbstractPanel" isAbstract="true">
+ <generalization xmi:id="_-Ro6wEJWEd6kIY39uis5Uw" general="_86BAgEJWEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:id="_943q4kJVEd6kIY39uis5Uw" name="window" type="_Xa5wIEJVEd6kIY39uis5Uw" association="_94kv8EJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_95Bb4EJVEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_95Bb4UJVEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_CIG2AEJXEd6kIY39uis5Uw" name="parent" type="_86BAgEJWEd6kIY39uis5Uw" isUnique="false" association="_CHzUAEJXEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CIP_8UJXEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CIP_8EJXEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_eE7YIEJVEd6kIY39uis5Uw" name="SashPanel">
+ <generalization xmi:id="_7VZokEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:id="__Ce-UEJVEd6kIY39uis5Uw" name="children" type="_Zx2ZYEJVEd6kIY39uis5Uw" aggregation="composite" association="__CVNUEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Ce-UkJVEd6kIY39uis5Uw" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__Ce-UUJVEd6kIY39uis5Uw" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_8rplQESDEd6kIY39uis5Uw" name="sashPosition" visibility="public" type="_IEBx4EV4Ed6g-YgfS2DHrA" isUnique="false">
+ <ownedComment xmi:id="_AWCzYESEEd6kIY39uis5Uw" annotatedElement="_8rplQESDEd6kIY39uis5Uw">
+ <body>Position of the sash in the panel. The position is in percent. The value should be between 0 and 100.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__mEH8ESDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__l6W8ESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__mEH8USDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_1nx64EbpEd6g-YgfS2DHrA" name="direction" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4G620EbpEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4GxF0EbpEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4G620UbpEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fbWYgEJVEd6kIY39uis5Uw" name="TabFolder">
+ <generalization xmi:id="_71vVgEJVEd6kIY39uis5Uw" general="_Zx2ZYEJVEd6kIY39uis5Uw"/>
+ <ownedAttribute xmi:id="_ANIzkEJWEd6kIY39uis5Uw" name="children" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_AM_CkEJWEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzkkJWEd6kIY39uis5Uw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzkUJWEd6kIY39uis5Uw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_Cqh_oEViEd6g-YgfS2DHrA" name="movePage">
+ <ownedParameter xmi:id="_ETI8MEViEd6g-YgfS2DHrA" name="oldIndex">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G2wIcUViEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G2wIcEViEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_G2wIckViEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_X27C4EV4Ed6g-YgfS2DHrA" name="newIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_amdyUUV4Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_amdyUEV4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_amdyUkV4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_oZu3cEWEEd6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:id="_oZu3cUWEEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oZu3ckWEEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oZu3c0WEEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oZu3dEWEEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_oEQBQEblEd6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:id="_oEQBQUblEd6g-YgfS2DHrA" name="pageIndex" type="_Hkk78EVbEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oEQBQkblEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oEQBQ0blEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oEQBREblEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_h_HVwEJVEd6kIY39uis5Uw" name="PageRef">
+ <ownedAttribute xmi:id="_ANIzk0JWEd6kIY39uis5Uw" name="parent" type="_fbWYgEJVEd6kIY39uis5Uw" isUnique="false" association="_AM_CkEJWEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ANIzlEJWEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ANIzlUJWEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_WOKbgEVbEd6g-YgfS2DHrA" name="pageIdentifier" visibility="public" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y5hOgEVbEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y5YEkEVbEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Y5hOgUVbEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_BxkKcEbaEd6g-YgfS2DHrA" name="isForIdentifier">
+ <ownedParameter xmi:id="_BxkKcUbaEd6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BxkKckbaEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BxkKc0baEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BxkKdEbaEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_D0_awEbaEd6g-YgfS2DHrA" name="null" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GFO_EUbaEd6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GFO_EEbaEd6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GFO_EkbaEd6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zd5g0EJVEd6kIY39uis5Uw" name="AbstractPage">
+ <ownedAttribute xmi:id="_rLVHwEa1Ed6g-YgfS2DHrA" name="pageIdentifier" visibility="public" type="_A-BP8EVhEd6g-YgfS2DHrA" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rLVHwUa1Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rLVHwka1Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rLVHw0a1Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9JomUEJVEd6kIY39uis5Uw" name="A_SashWindowsRoot_Window" memberEnd="_9KYNMEJVEd6kIY39uis5Uw _9Kh-MEJVEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_9Kh-MEJVEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_9JomUEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Kh-MUJVEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9Kh-MkJVEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_94kv8EJVEd6kIY39uis5Uw" name="A_Window_AbstractPanel" memberEnd="_94t54EJVEd6kIY39uis5Uw _943q4kJVEd6kIY39uis5Uw"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="__CVNUEJVEd6kIY39uis5Uw" name="A_SashPanel_AbstractPanel" memberEnd="__Ce-UEJVEd6kIY39uis5Uw __CoIQEJVEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="__CoIQEJVEd6kIY39uis5Uw" name="sashPanel" type="_eE7YIEJVEd6kIY39uis5Uw" isUnique="false" association="__CVNUEJVEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__CoIQUJVEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__CoIQkJVEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_AM_CkEJWEd6kIY39uis5Uw" name="A_TabFolder_AbstractPageRef" memberEnd="_ANIzkEJWEd6kIY39uis5Uw _ANIzk0JWEd6kIY39uis5Uw"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_86BAgEJWEd6kIY39uis5Uw" name="AbstractNode" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_CHzUAEJXEd6kIY39uis5Uw" name="A_AbstractPanel_AbstractNode" memberEnd="_CIG2AEJXEd6kIY39uis5Uw _CIP_8kJXEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_CIP_8kJXEd6kIY39uis5Uw" name="panels" type="_Zx2ZYEJVEd6kIY39uis5Uw" isUnique="false" association="_CHzUAEJXEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CIZw8EJXEd6kIY39uis5Uw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CIZw8UJXEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_viyZUEJZEd6kIY39uis5Uw" name="A_PageList_PageRef" memberEnd="_vjFUQEJZEd6kIY39uis5Uw _vjYPMkJZEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_vjYPMkJZEd6kIY39uis5Uw" name="sashWindowsRoot" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" association="_viyZUEJZEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjiAMEJZEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjiAMUJZEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_mT2jkEJkEd6kIY39uis5Uw" name="A_SashWindowsRoot_TabFolder" memberEnd="_mW0_EEJkEd6kIY39uis5Uw _mW0_E0JkEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_mW0_E0JkEd6kIY39uis5Uw" name="sashWindowsRoot" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" association="_mT2jkEJkEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mW-wEEJkEd6kIY39uis5Uw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mW-wEUJkEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_b7a4cEMaEd6kIY39uis5Uw" name="PageList">
+ <ownedAttribute xmi:id="_vjFUQEJZEd6kIY39uis5Uw" name="availablePage" type="_h_HVwEJVEd6kIY39uis5Uw" aggregation="composite" association="_viyZUEJZEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjYPMUJZEd6kIY39uis5Uw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjYPMEJZEd6kIY39uis5Uw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_i92ooEa4Ed6g-YgfS2DHrA" name="addPage">
+ <ownedParameter xmi:id="_i92ooUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i92ooka4Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i92oo0a4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_i92opEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ocolgEa4Ed6g-YgfS2DHrA" name="removePage">
+ <ownedParameter xmi:id="_ocolgUa4Ed6g-YgfS2DHrA" name="pageIdentifier" type="_A-BP8EVhEd6g-YgfS2DHrA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ocolgka4Ed6g-YgfS2DHrA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ocolg0a4Ed6g-YgfS2DHrA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ocolhEa4Ed6g-YgfS2DHrA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-9vywEMaEd6kIY39uis5Uw" name="SashWindowsMngr">
+ <ownedAttribute xmi:id="_9osO4EMbEd6kIY39uis5Uw" name="pageList" type="_b7a4cEMaEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_9k0bgEMbEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9osO4kMbEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9osO4UMbEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_-JenwEMbEd6kIY39uis5Uw" name="sashModel" type="_UiIMMEJVEd6kIY39uis5Uw" isUnique="false" aggregation="composite" association="_-EQwkEMbEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JnxsUMbEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxsEMbEd6kIY39uis5Uw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9k0bgEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_PageList" memberEnd="_9osO4EMbEd6kIY39uis5Uw _9osO40MbEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_9osO40MbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_9k0bgEMbEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9o1_4EMbEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9o1_4UMbEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_-EQwkEMbEd6kIY39uis5Uw" name="A_MultiPageEditor_SashWindowsLayout" memberEnd="_-JenwEMbEd6kIY39uis5Uw _-JnxskMbEd6kIY39uis5Uw">
+ <ownedEnd xmi:id="_-JnxskMbEd6kIY39uis5Uw" name="multiPageEditor" type="_-9vywEMaEd6kIY39uis5Uw" isUnique="false" association="_-EQwkEMbEd6kIY39uis5Uw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-Jnxs0MbEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JnxtEMbEd6kIY39uis5Uw"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jc9vQESDEd6kIY39uis5Uw" name="Position">
+ <ownedAttribute xmi:id="_m9q14ESDEd6kIY39uis5Uw" name="x" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZ1WUUSDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pZ1WUESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_paIRQESDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_pmDNYESDEd6kIY39uis5Uw" name="y" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q5DtYESDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q458YESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q5DtYUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_lh4NUESDEd6kIY39uis5Uw" name="Size">
+ <ownedAttribute xmi:id="_s1CR4ESDEd6kIY39uis5Uw" name="width" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u5NJEESDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u5DYEESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_u5NJEUSDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_vnZr0ESDEd6kIY39uis5Uw" name="length" visibility="public" type="_Hkk78EVbEd6g-YgfS2DHrA" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w_dq8ESDEd6kIY39uis5Uw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w_T58ESDEd6kIY39uis5Uw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_w_dq8USDEd6kIY39uis5Uw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Hkk78EVbEd6g-YgfS2DHrA" name="Integer"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A-BP8EVhEd6g-YgfS2DHrA" name="JavaObject"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IEBx4EV4Ed6g-YgfS2DHrA" name="Float"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SNSWAEbaEd6g-YgfS2DHrA" name="boolean"/>
+ <profileApplication xmi:id="_NuHhwkJVEd6kIY39uis5Uw">
+ <eAnnotations xmi:id="_NuHhw0JVEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/schemas/Standard/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_wpAy0EJfEd6kIY39uis5Uw">
+ <eAnnotations xmi:id="_wpJ8wEJfEd6kIY39uis5Uw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_zLIxUEJfEd6kIY39uis5Uw" nsPrefix="di2" nsURI="http://www.eclipse.org/papyrus/0.7.0/sashdi" basePackage="org.eclipse.papyrus.sashwindows.di"/>
+ <Ecore:EPackage xmi:id="_mo48QEJgEd6kIY39uis5Uw" base_Package="_NuHhwEJVEd6kIY39uis5Uw" nsPrefix="di" nsURI="http://www.eclipse.org/papyrus/0.7.0/sashdi" basePackage="org.eclipse.papyrus.sashwindows" prefix="Di"/>
+ <Ecore:EClass xmi:id="_XL4scES1Ed6g-YgfS2DHrA" instanceClassName="java.lang.Integer"/>
+ <Ecore:EAttribute xmi:id="_7fEJYEVfEd6g-YgfS2DHrA"/>
+ <Ecore:EClass xmi:id="_NUMKIEVbEd6g-YgfS2DHrA" instanceClassName="java.lang.Object"/>
+ <Ecore:EDataType xmi:id="_6EWpcEVgEd6g-YgfS2DHrA" instanceClassName="int" base_PrimitiveType="_Hkk78EVbEd6g-YgfS2DHrA" dataTypeName="int"/>
+ <Ecore:EDataType xmi:id="_DLSYwEVhEd6g-YgfS2DHrA" instanceClassName="java.lang.Object" base_PrimitiveType="_A-BP8EVhEd6g-YgfS2DHrA"/>
+ <Ecore:EDataType xmi:id="_MeaSgEV4Ed6g-YgfS2DHrA" instanceClassName="float" base_PrimitiveType="_IEBx4EV4Ed6g-YgfS2DHrA"/>
+ <Ecore:EDataType xmi:id="_UtLf4EbaEd6g-YgfS2DHrA" instanceClassName="boolean" base_PrimitiveType="_SNSWAEbaEd6g-YgfS2DHrA"/>
+</xmi:XMI>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.properties b/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.properties
new file mode 100644
index 00000000000..4fe8da1dc94
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.properties
@@ -0,0 +1,8 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+pluginName = Sashwindowsdi Model
+providerName = www.example.org
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.xml b/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.xml
new file mode 100644
index 00000000000..427b8eb86f0
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http:///sashwindowsdi/di.ecore"
+ class="sashwindowsdi.di.DiPackage"
+ genModel="model/sashwindowsdi.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java
new file mode 100644
index 00000000000..e89392e946f
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+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.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Page List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageListImpl#getAvailablePage <em>Available Page</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PageListImpl extends EObjectImpl implements PageList {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+
+ PageRef pageRef = DiFactory.eINSTANCE.createPageRef();
+ pageRef.setPageIdentifier(pageIdentifier);
+ getAvailablePage().add(pageRef);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(Object pageIdentifier) {
+ for( PageRef pageRef : getAvailablePage() )
+ {
+
+ if(pageRef.getPageIdentifier().equals(pageIdentifier))
+ {
+ getAvailablePage().remove(pageRef);
+ return ;
+ }
+ }
+ }
+
+} //PageListImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java
new file mode 100644
index 00000000000..ade33b50b06
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java
@@ -0,0 +1,48 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Page Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl#getPageIdentifier <em>Page Identifier</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl#getParent <em>Parent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PageRefImpl extends EObjectImpl implements PageRef {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isForIdentifier(Object pageIdentifier) {
+ return getPageIdentifier().equals(pageIdentifier);
+ }
+
+} //PageRefImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java
new file mode 100644
index 00000000000..919cbe559f0
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java
@@ -0,0 +1,145 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashPanel;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.sashwindows.di.Window;
+import org.eclipse.papyrus.sashwindows.di.util.DiSwitch;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sash Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl#getWindows <em>Windows</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl#getCurrentSelection <em>Current Selection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SashModelImpl extends EObjectImpl implements SashModel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+ getCurrentSelection().addPage(pageIdentifier);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PageRef lookupPage(final Object pageIdentifier) {
+
+ // Create appropriate visitor.
+ DiSwitch<PageRef> visitor = new DiSwitch<PageRef>( ) {
+
+ /**
+ * Iterate over windows
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseSashModel(org.eclipse.papyrus.sashwindows.di.SashModel)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseSashModel(SashModel object) {
+ PageRef res = null;
+ for( Window window : object.getWindows() )
+ {
+ res = this.doSwitch(window);
+ if(res != null)
+ return res;
+ }
+
+ return super.caseSashModel(object);
+ }
+
+ /**
+ * Iterate over children
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseSashPanel(org.eclipse.papyrus.sashwindows.di.SashPanel)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseSashPanel(SashPanel object) {
+ PageRef res = null;
+ for( AbstractPanel panel : object.getChildren() )
+ {
+ res = this.doSwitch(panel);
+ if(res != null)
+ return res;
+ }
+
+ return super.caseSashPanel(object);
+ }
+
+ /**
+ * Iterate over PageRef
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseTabFolder(org.eclipse.papyrus.sashwindows.di.TabFolder)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseTabFolder(TabFolder object) {
+ for( PageRef pageRef : object.getChildren() )
+ {
+
+ if(pageRef.isForIdentifier(pageIdentifier) )
+ return pageRef;
+ }
+
+ return super.caseTabFolder(object);
+ }
+ };
+
+ // Do lookup
+ PageRef res = visitor.doSwitch(this);
+
+ return res;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(Object pageIdentifier) {
+ PageRef pageRef = lookupPage(pageIdentifier);
+ if(pageRef == null)
+ return;
+
+ // Remove it
+ pageRef.getParent().getChildren().remove(pageRef);
+ }
+
+} //SashModelImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java
new file mode 100644
index 00000000000..201b4e9941a
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java
@@ -0,0 +1,87 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tab Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+ PageRef newPage = DiFactory.eINSTANCE.createPageRef();
+ newPage.setPageIdentifier(pageIdentifier);
+ getChildren().add(newPage);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.TabFolder#movePage(int, int)
+ *
+ * @param oldIndex
+ * @param newIndex
+ * @generated NOT
+ */
+ public void movePage(int oldIndex, int newIndex) {
+ int listSize = getChildren().size();
+ if (newIndex >= listSize)
+ {
+ newIndex = listSize-1;
+ }
+ if (newIndex < 0)
+ {
+ newIndex = 0;
+ }
+
+ if (oldIndex == newIndex)
+ return;
+
+ if( listSize == 0)
+ return;
+
+
+ getChildren().move(newIndex, oldIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(int pageIndex) {
+ getChildren().remove(pageIndex);
+ }
+
+
+} //TabFolderImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java
new file mode 100644
index 00000000000..01a7ef4124f
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src-spare/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (c) 2009 CEA LIST & LIFL
+ *
+ *
+ * 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:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sashwindows.di.util;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashWindowsMngr;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.sashwindows.di.Window;
+
+
+/**
+ * Set of utility methods
+ * @author dumoulin
+ */
+public class DiUtils {
+
+ /**
+ * Create a default SashModel with one window and one folder.
+ * Set the current folder.
+ * @param diResource
+ * @return
+ */
+ static public SashModel createDefaultSashModel() {
+
+ // SashModel
+ SashModel sashModel = DiFactory.eINSTANCE.createSashModel();
+ Window window = DiFactory.eINSTANCE.createWindow();
+ sashModel.getWindows().add(window);
+
+ TabFolder folder = DiFactory.eINSTANCE.createTabFolder();
+ window.setPanel(folder);
+ // Default folder
+ sashModel.setCurrentSelection(folder);
+
+ return sashModel;
+ }
+
+ /**
+ * Create a default SashWindowsMngr with one PageLit and one default SashModel.
+ * Set the current folder.
+ * @param diResource
+ * @return
+ */
+ static public SashWindowsMngr createDefaultSashWindowsMngr() {
+ SashWindowsMngr model;
+
+ model = DiFactory.eINSTANCE.createSashWindowsMngr();
+
+ // SashModel
+ SashModel layout = createDefaultSashModel();
+
+ model.setSashModel(layout);
+
+ // PageList
+ PageList pageList = DiFactory.eINSTANCE.createPageList();
+ model.setPageList(pageList);
+ return model;
+ }
+
+ /**
+ * Lookup for the SashModel object in the resource.
+ * @param diResource
+ * @return The {@link DiSashModel} or null if not found.
+ */
+ static public SashWindowsMngr lookupSashModel(Resource diResource) {
+
+ for( Object node : diResource.getContents() )
+ {
+ if( node instanceof SashWindowsMngr)
+ return (SashWindowsMngr)node;
+ }
+ return null;
+ }
+
+
+}
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractNode.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractNode.java
new file mode 100644
index 00000000000..ab47fa98c13
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractNode.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractNode()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractNode extends EObject {
+} // AbstractNode
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPage.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPage.java
new file mode 100644
index 00000000000..bdfee43f339
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPage.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Page</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.AbstractPage#getPageIdentifier <em>Page Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractPage()
+ * @model
+ * @generated
+ */
+public interface AbstractPage extends EObject {
+ /**
+ * Returns the value of the '<em><b>Page Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Page Identifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Page Identifier</em>' attribute.
+ * @see #setPageIdentifier(Object)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractPage_PageIdentifier()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.JavaObject" required="true" ordered="false"
+ * @generated
+ */
+ Object getPageIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.AbstractPage#getPageIdentifier <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Page Identifier</em>' attribute.
+ * @see #getPageIdentifier()
+ * @generated
+ */
+ void setPageIdentifier(Object value);
+
+} // AbstractPage
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPanel.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPanel.java
new file mode 100644
index 00000000000..cfa96f7a423
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/AbstractPanel.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Panel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow <em>Window</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractPanel()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractPanel extends AbstractNode {
+ /**
+ * Returns the value of the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Parent</em>' reference.
+ * @see #setParent(AbstractNode)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractPanel_Parent()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ AbstractNode getParent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getParent <em>Parent</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Parent</em>' reference.
+ * @see #getParent()
+ * @generated
+ */
+ void setParent(AbstractNode value);
+
+ /**
+ * Returns the value of the '<em><b>Window</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.sashwindows.di.Window#getPanel <em>Panel</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Window</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Window</em>' container reference.
+ * @see #setWindow(Window)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getAbstractPanel_Window()
+ * @see org.eclipse.papyrus.sashwindows.di.Window#getPanel
+ * @model opposite="panel" required="true" transient="false" ordered="false"
+ * @generated
+ */
+ Window getWindow();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow <em>Window</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Window</em>' container reference.
+ * @see #getWindow()
+ * @generated
+ */
+ void setWindow(Window value);
+
+} // AbstractPanel
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiFactory.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiFactory.java
new file mode 100644
index 00000000000..1f52b1cb114
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiFactory.java
@@ -0,0 +1,127 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage
+ * @generated
+ */
+public interface DiFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DiFactory eINSTANCE = org.eclipse.papyrus.sashwindows.di.impl.DiFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Sash Model</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sash Model</em>'.
+ * @generated
+ */
+ SashModel createSashModel();
+
+ /**
+ * Returns a new object of class '<em>Window</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Window</em>'.
+ * @generated
+ */
+ Window createWindow();
+
+ /**
+ * Returns a new object of class '<em>Position</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Position</em>'.
+ * @generated
+ */
+ Position createPosition();
+
+ /**
+ * Returns a new object of class '<em>Size</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Size</em>'.
+ * @generated
+ */
+ Size createSize();
+
+ /**
+ * Returns a new object of class '<em>Tab Folder</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Tab Folder</em>'.
+ * @generated
+ */
+ TabFolder createTabFolder();
+
+ /**
+ * Returns a new object of class '<em>Page Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Page Ref</em>'.
+ * @generated
+ */
+ PageRef createPageRef();
+
+ /**
+ * Returns a new object of class '<em>Sash Panel</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sash Panel</em>'.
+ * @generated
+ */
+ SashPanel createSashPanel();
+
+ /**
+ * Returns a new object of class '<em>Abstract Page</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Abstract Page</em>'.
+ * @generated
+ */
+ AbstractPage createAbstractPage();
+
+ /**
+ * Returns a new object of class '<em>Page List</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Page List</em>'.
+ * @generated
+ */
+ PageList createPageList();
+
+ /**
+ * Returns a new object of class '<em>Sash Windows Mngr</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sash Windows Mngr</em>'.
+ * @generated
+ */
+ SashWindowsMngr createSashWindowsMngr();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ DiPackage getDiPackage();
+
+} //DiFactory
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiPackage.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiPackage.java
new file mode 100644
index 00000000000..a195b478839
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/DiPackage.java
@@ -0,0 +1,1296 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * 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>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.DiFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DiPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "di";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/papyrus/0.7.0/sashdi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "di";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DiPackage eINSTANCE = org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl <em>Sash Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashModel()
+ * @generated
+ */
+ int SASH_MODEL = 0;
+
+ /**
+ * The feature id for the '<em><b>Windows</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_MODEL__WINDOWS = 0;
+
+ /**
+ * The feature id for the '<em><b>Current Selection</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_MODEL__CURRENT_SELECTION = 1;
+
+ /**
+ * The number of structural features of the '<em>Sash Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_MODEL_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractNodeImpl <em>Abstract Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractNodeImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractNode()
+ * @generated
+ */
+ int ABSTRACT_NODE = 2;
+
+ /**
+ * The number of structural features of the '<em>Abstract Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NODE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.WindowImpl <em>Window</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.WindowImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getWindow()
+ * @generated
+ */
+ int WINDOW = 1;
+
+ /**
+ * The feature id for the '<em><b>Panel</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WINDOW__PANEL = ABSTRACT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Position</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WINDOW__POSITION = ABSTRACT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Size</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WINDOW__SIZE = ABSTRACT_NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Window</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WINDOW_FEATURE_COUNT = ABSTRACT_NODE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl <em>Abstract Panel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractPanel()
+ * @generated
+ */
+ int ABSTRACT_PANEL = 3;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_PANEL__PARENT = ABSTRACT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Window</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_PANEL__WINDOW = ABSTRACT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Abstract Panel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_PANEL_FEATURE_COUNT = ABSTRACT_NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PositionImpl <em>Position</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PositionImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPosition()
+ * @generated
+ */
+ int POSITION = 4;
+
+ /**
+ * The feature id for the '<em><b>X</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int POSITION__X = 0;
+
+ /**
+ * The feature id for the '<em><b>Y</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int POSITION__Y = 1;
+
+ /**
+ * The number of structural features of the '<em>Position</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int POSITION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SizeImpl <em>Size</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SizeImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSize()
+ * @generated
+ */
+ int SIZE = 5;
+
+ /**
+ * The feature id for the '<em><b>Width</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE__WIDTH = 0;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE__LENGTH = 1;
+
+ /**
+ * The number of structural features of the '<em>Size</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl <em>Tab Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getTabFolder()
+ * @generated
+ */
+ int TAB_FOLDER = 6;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TAB_FOLDER__PARENT = ABSTRACT_PANEL__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Window</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TAB_FOLDER__WINDOW = ABSTRACT_PANEL__WINDOW;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TAB_FOLDER__CHILDREN = ABSTRACT_PANEL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Tab Folder</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TAB_FOLDER_FEATURE_COUNT = ABSTRACT_PANEL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl <em>Page Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPageRef()
+ * @generated
+ */
+ int PAGE_REF = 7;
+
+ /**
+ * The feature id for the '<em><b>Page Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PAGE_REF__PAGE_IDENTIFIER = 0;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PAGE_REF__PARENT = 1;
+
+ /**
+ * The number of structural features of the '<em>Page Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PAGE_REF_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl <em>Sash Panel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashPanel()
+ * @generated
+ */
+ int SASH_PANEL = 8;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL__PARENT = ABSTRACT_PANEL__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Window</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL__WINDOW = ABSTRACT_PANEL__WINDOW;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL__CHILDREN = ABSTRACT_PANEL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Sash Position</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL__SASH_POSITION = ABSTRACT_PANEL_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Direction</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL__DIRECTION = ABSTRACT_PANEL_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Sash Panel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_PANEL_FEATURE_COUNT = ABSTRACT_PANEL_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPageImpl <em>Abstract Page</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractPageImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractPage()
+ * @generated
+ */
+ int ABSTRACT_PAGE = 9;
+
+ /**
+ * The feature id for the '<em><b>Page Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_PAGE__PAGE_IDENTIFIER = 0;
+
+ /**
+ * The number of structural features of the '<em>Abstract Page</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_PAGE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PageListImpl <em>Page List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PageListImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPageList()
+ * @generated
+ */
+ int PAGE_LIST = 10;
+
+ /**
+ * The feature id for the '<em><b>Available Page</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PAGE_LIST__AVAILABLE_PAGE = 0;
+
+ /**
+ * The number of structural features of the '<em>Page List</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PAGE_LIST_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl <em>Sash Windows Mngr</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashWindowsMngr()
+ * @generated
+ */
+ int SASH_WINDOWS_MNGR = 11;
+
+ /**
+ * The feature id for the '<em><b>Page List</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_WINDOWS_MNGR__PAGE_LIST = 0;
+
+ /**
+ * The feature id for the '<em><b>Sash Model</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_WINDOWS_MNGR__SASH_MODEL = 1;
+
+ /**
+ * The number of structural features of the '<em>Sash Windows Mngr</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SASH_WINDOWS_MNGR_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '<em>int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getint()
+ * @generated
+ */
+ int INT = 12;
+
+ /**
+ * The meta object id for the '<em>Java Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getJavaObject()
+ * @generated
+ */
+ int JAVA_OBJECT = 13;
+
+ /**
+ * The meta object id for the '<em>Float</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getFloat()
+ * @generated
+ */
+ int FLOAT = 14;
+
+
+ /**
+ * The meta object id for the '<em>boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getboolean()
+ * @generated
+ */
+ int BOOLEAN = 15;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.SashModel <em>Sash Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sash Model</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashModel
+ * @generated
+ */
+ EClass getSashModel();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sashwindows.di.SashModel#getWindows <em>Windows</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Windows</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashModel#getWindows()
+ * @see #getSashModel()
+ * @generated
+ */
+ EReference getSashModel_Windows();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.sashwindows.di.SashModel#getCurrentSelection <em>Current Selection</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Current Selection</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashModel#getCurrentSelection()
+ * @see #getSashModel()
+ * @generated
+ */
+ EReference getSashModel_CurrentSelection();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.Window <em>Window</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Window</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Window
+ * @generated
+ */
+ EClass getWindow();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.sashwindows.di.Window#getPanel <em>Panel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Panel</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Window#getPanel()
+ * @see #getWindow()
+ * @generated
+ */
+ EReference getWindow_Panel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.sashwindows.di.Window#getPosition <em>Position</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Position</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Window#getPosition()
+ * @see #getWindow()
+ * @generated
+ */
+ EReference getWindow_Position();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.sashwindows.di.Window#getSize <em>Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Size</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Window#getSize()
+ * @see #getWindow()
+ * @generated
+ */
+ EReference getWindow_Size();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.AbstractNode <em>Abstract Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Node</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractNode
+ * @generated
+ */
+ EClass getAbstractNode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel <em>Abstract Panel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Panel</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPanel
+ * @generated
+ */
+ EClass getAbstractPanel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Parent</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPanel#getParent()
+ * @see #getAbstractPanel()
+ * @generated
+ */
+ EReference getAbstractPanel_Parent();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow <em>Window</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Window</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow()
+ * @see #getAbstractPanel()
+ * @generated
+ */
+ EReference getAbstractPanel_Window();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.Position <em>Position</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Position</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Position
+ * @generated
+ */
+ EClass getPosition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.Position#getX <em>X</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>X</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Position#getX()
+ * @see #getPosition()
+ * @generated
+ */
+ EAttribute getPosition_X();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.Position#getY <em>Y</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Y</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Position#getY()
+ * @see #getPosition()
+ * @generated
+ */
+ EAttribute getPosition_Y();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.Size <em>Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Size</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Size
+ * @generated
+ */
+ EClass getSize();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.Size#getWidth <em>Width</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Width</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Size#getWidth()
+ * @see #getSize()
+ * @generated
+ */
+ EAttribute getSize_Width();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.Size#getLength <em>Length</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Length</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.Size#getLength()
+ * @see #getSize()
+ * @generated
+ */
+ EAttribute getSize_Length();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.TabFolder <em>Tab Folder</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Tab Folder</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.TabFolder
+ * @generated
+ */
+ EClass getTabFolder();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sashwindows.di.TabFolder#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Children</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.TabFolder#getChildren()
+ * @see #getTabFolder()
+ * @generated
+ */
+ EReference getTabFolder_Children();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.PageRef <em>Page Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Page Ref</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.PageRef
+ * @generated
+ */
+ EClass getPageRef();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.PageRef#getPageIdentifier <em>Page Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Page Identifier</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.PageRef#getPageIdentifier()
+ * @see #getPageRef()
+ * @generated
+ */
+ EAttribute getPageRef_PageIdentifier();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.papyrus.sashwindows.di.PageRef#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Parent</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.PageRef#getParent()
+ * @see #getPageRef()
+ * @generated
+ */
+ EReference getPageRef_Parent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.SashPanel <em>Sash Panel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sash Panel</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashPanel
+ * @generated
+ */
+ EClass getSashPanel();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Children</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashPanel#getChildren()
+ * @see #getSashPanel()
+ * @generated
+ */
+ EReference getSashPanel_Children();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getSashPosition <em>Sash Position</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Sash Position</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashPanel#getSashPosition()
+ * @see #getSashPanel()
+ * @generated
+ */
+ EAttribute getSashPanel_SashPosition();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getDirection <em>Direction</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Direction</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashPanel#getDirection()
+ * @see #getSashPanel()
+ * @generated
+ */
+ EAttribute getSashPanel_Direction();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.AbstractPage <em>Abstract Page</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Page</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPage
+ * @generated
+ */
+ EClass getAbstractPage();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.sashwindows.di.AbstractPage#getPageIdentifier <em>Page Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Page Identifier</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPage#getPageIdentifier()
+ * @see #getAbstractPage()
+ * @generated
+ */
+ EAttribute getAbstractPage_PageIdentifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.PageList <em>Page List</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Page List</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.PageList
+ * @generated
+ */
+ EClass getPageList();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.sashwindows.di.PageList#getAvailablePage <em>Available Page</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Available Page</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.PageList#getAvailablePage()
+ * @see #getPageList()
+ * @generated
+ */
+ EReference getPageList_AvailablePage();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr <em>Sash Windows Mngr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sash Windows Mngr</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashWindowsMngr
+ * @generated
+ */
+ EClass getSashWindowsMngr();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getPageList <em>Page List</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Page List</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getPageList()
+ * @see #getSashWindowsMngr()
+ * @generated
+ */
+ EReference getSashWindowsMngr_PageList();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getSashModel <em>Sash Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Sash Model</em>'.
+ * @see org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getSashModel()
+ * @see #getSashWindowsMngr()
+ * @generated
+ */
+ EReference getSashWindowsMngr_SashModel();
+
+ /**
+ * Returns the meta object for data type '<em>int</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>int</em>'.
+ * @model instanceClass="int"
+ * @generated
+ */
+ EDataType getint();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.Object <em>Java Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Java Object</em>'.
+ * @see java.lang.Object
+ * @model instanceClass="java.lang.Object"
+ * @generated
+ */
+ EDataType getJavaObject();
+
+ /**
+ * Returns the meta object for data type '<em>Float</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Float</em>'.
+ * @model instanceClass="float"
+ * @generated
+ */
+ EDataType getFloat();
+
+ /**
+ * Returns the meta object for data type '<em>boolean</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>boolean</em>'.
+ * @model instanceClass="boolean"
+ * @generated
+ */
+ EDataType getboolean();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ DiFactory getDiFactory();
+
+ /**
+ * <!-- 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>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl <em>Sash Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashModel()
+ * @generated
+ */
+ EClass SASH_MODEL = eINSTANCE.getSashModel();
+
+ /**
+ * The meta object literal for the '<em><b>Windows</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SASH_MODEL__WINDOWS = eINSTANCE.getSashModel_Windows();
+
+ /**
+ * The meta object literal for the '<em><b>Current Selection</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SASH_MODEL__CURRENT_SELECTION = eINSTANCE.getSashModel_CurrentSelection();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.WindowImpl <em>Window</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.WindowImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getWindow()
+ * @generated
+ */
+ EClass WINDOW = eINSTANCE.getWindow();
+
+ /**
+ * The meta object literal for the '<em><b>Panel</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WINDOW__PANEL = eINSTANCE.getWindow_Panel();
+
+ /**
+ * The meta object literal for the '<em><b>Position</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WINDOW__POSITION = eINSTANCE.getWindow_Position();
+
+ /**
+ * The meta object literal for the '<em><b>Size</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WINDOW__SIZE = eINSTANCE.getWindow_Size();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractNodeImpl <em>Abstract Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractNodeImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractNode()
+ * @generated
+ */
+ EClass ABSTRACT_NODE = eINSTANCE.getAbstractNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl <em>Abstract Panel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractPanel()
+ * @generated
+ */
+ EClass ABSTRACT_PANEL = eINSTANCE.getAbstractPanel();
+
+ /**
+ * The meta object literal for the '<em><b>Parent</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_PANEL__PARENT = eINSTANCE.getAbstractPanel_Parent();
+
+ /**
+ * The meta object literal for the '<em><b>Window</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_PANEL__WINDOW = eINSTANCE.getAbstractPanel_Window();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PositionImpl <em>Position</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PositionImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPosition()
+ * @generated
+ */
+ EClass POSITION = eINSTANCE.getPosition();
+
+ /**
+ * The meta object literal for the '<em><b>X</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute POSITION__X = eINSTANCE.getPosition_X();
+
+ /**
+ * The meta object literal for the '<em><b>Y</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute POSITION__Y = eINSTANCE.getPosition_Y();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SizeImpl <em>Size</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SizeImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSize()
+ * @generated
+ */
+ EClass SIZE = eINSTANCE.getSize();
+
+ /**
+ * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SIZE__WIDTH = eINSTANCE.getSize_Width();
+
+ /**
+ * The meta object literal for the '<em><b>Length</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SIZE__LENGTH = eINSTANCE.getSize_Length();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl <em>Tab Folder</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getTabFolder()
+ * @generated
+ */
+ EClass TAB_FOLDER = eINSTANCE.getTabFolder();
+
+ /**
+ * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TAB_FOLDER__CHILDREN = eINSTANCE.getTabFolder_Children();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl <em>Page Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPageRef()
+ * @generated
+ */
+ EClass PAGE_REF = eINSTANCE.getPageRef();
+
+ /**
+ * The meta object literal for the '<em><b>Page Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PAGE_REF__PAGE_IDENTIFIER = eINSTANCE.getPageRef_PageIdentifier();
+
+ /**
+ * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PAGE_REF__PARENT = eINSTANCE.getPageRef_Parent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl <em>Sash Panel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashPanel()
+ * @generated
+ */
+ EClass SASH_PANEL = eINSTANCE.getSashPanel();
+
+ /**
+ * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SASH_PANEL__CHILDREN = eINSTANCE.getSashPanel_Children();
+
+ /**
+ * The meta object literal for the '<em><b>Sash Position</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SASH_PANEL__SASH_POSITION = eINSTANCE.getSashPanel_SashPosition();
+
+ /**
+ * The meta object literal for the '<em><b>Direction</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SASH_PANEL__DIRECTION = eINSTANCE.getSashPanel_Direction();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPageImpl <em>Abstract Page</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.AbstractPageImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getAbstractPage()
+ * @generated
+ */
+ EClass ABSTRACT_PAGE = eINSTANCE.getAbstractPage();
+
+ /**
+ * The meta object literal for the '<em><b>Page Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_PAGE__PAGE_IDENTIFIER = eINSTANCE.getAbstractPage_PageIdentifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.PageListImpl <em>Page List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.PageListImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getPageList()
+ * @generated
+ */
+ EClass PAGE_LIST = eINSTANCE.getPageList();
+
+ /**
+ * The meta object literal for the '<em><b>Available Page</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PAGE_LIST__AVAILABLE_PAGE = eINSTANCE.getPageList_AvailablePage();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl <em>Sash Windows Mngr</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getSashWindowsMngr()
+ * @generated
+ */
+ EClass SASH_WINDOWS_MNGR = eINSTANCE.getSashWindowsMngr();
+
+ /**
+ * The meta object literal for the '<em><b>Page List</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SASH_WINDOWS_MNGR__PAGE_LIST = eINSTANCE.getSashWindowsMngr_PageList();
+
+ /**
+ * The meta object literal for the '<em><b>Sash Model</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SASH_WINDOWS_MNGR__SASH_MODEL = eINSTANCE.getSashWindowsMngr_SashModel();
+
+ /**
+ * The meta object literal for the '<em>int</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getint()
+ * @generated
+ */
+ EDataType INT = eINSTANCE.getint();
+
+ /**
+ * The meta object literal for the '<em>Java Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Object
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getJavaObject()
+ * @generated
+ */
+ EDataType JAVA_OBJECT = eINSTANCE.getJavaObject();
+
+ /**
+ * The meta object literal for the '<em>Float</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getFloat()
+ * @generated
+ */
+ EDataType FLOAT = eINSTANCE.getFloat();
+
+ /**
+ * The meta object literal for the '<em>boolean</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.impl.DiPackageImpl#getboolean()
+ * @generated
+ */
+ EDataType BOOLEAN = eINSTANCE.getboolean();
+
+ }
+
+} //DiPackage
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageList.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageList.java
new file mode 100644
index 00000000000..3ff9491a530
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageList.java
@@ -0,0 +1,62 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Page List</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.PageList#getAvailablePage <em>Available Page</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPageList()
+ * @model
+ * @generated
+ */
+public interface PageList extends EObject {
+ /**
+ * Returns the value of the '<em><b>Available Page</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.sashwindows.di.PageRef}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Available Page</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Available Page</em>' containment reference list.
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPageList_AvailablePage()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<PageRef> getAvailablePage();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ void addPage(Object pageIdentifier);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ void removePage(Object pageIdentifier);
+
+} // PageList
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageRef.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageRef.java
new file mode 100644
index 00000000000..82b897098ea
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/PageRef.java
@@ -0,0 +1,91 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Page Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.PageRef#getPageIdentifier <em>Page Identifier</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.PageRef#getParent <em>Parent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPageRef()
+ * @model
+ * @generated
+ */
+public interface PageRef extends EObject {
+ /**
+ * Returns the value of the '<em><b>Page Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Page Identifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Page Identifier</em>' attribute.
+ * @see #setPageIdentifier(Object)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPageRef_PageIdentifier()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.JavaObject" required="true" ordered="false"
+ * @generated
+ */
+ Object getPageIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.PageRef#getPageIdentifier <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Page Identifier</em>' attribute.
+ * @see #getPageIdentifier()
+ * @generated
+ */
+ void setPageIdentifier(Object value);
+
+ /**
+ * Returns the value of the '<em><b>Parent</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.sashwindows.di.TabFolder#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Parent</em>' container reference.
+ * @see #setParent(TabFolder)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPageRef_Parent()
+ * @see org.eclipse.papyrus.sashwindows.di.TabFolder#getChildren
+ * @model opposite="children" required="true" transient="false" ordered="false"
+ * @generated
+ */
+ TabFolder getParent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.PageRef#getParent <em>Parent</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Parent</em>' container reference.
+ * @see #getParent()
+ * @generated
+ */
+ void setParent(TabFolder value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true" ordered="false" pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ boolean isForIdentifier(Object pageIdentifier);
+
+} // PageRef
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Position.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Position.java
new file mode 100644
index 00000000000..577d075fdc6
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Position.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Position</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Position#getX <em>X</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Position#getY <em>Y</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPosition()
+ * @model
+ * @generated
+ */
+public interface Position extends EObject {
+ /**
+ * Returns the value of the '<em><b>X</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>X</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>X</em>' attribute.
+ * @see #setX(int)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPosition_X()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ int getX();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Position#getX <em>X</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>X</em>' attribute.
+ * @see #getX()
+ * @generated
+ */
+ void setX(int value);
+
+ /**
+ * Returns the value of the '<em><b>Y</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Y</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Y</em>' attribute.
+ * @see #setY(int)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getPosition_Y()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.int" required="true" ordered="false"
+ * @generated
+ */
+ int getY();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Position#getY <em>Y</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Y</em>' attribute.
+ * @see #getY()
+ * @generated
+ */
+ void setY(int value);
+
+} // Position
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashModel.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashModel.java
new file mode 100644
index 00000000000..493729e05d3
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashModel.java
@@ -0,0 +1,124 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sash Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Root node of the model describing the sash windows, panels and pages.
+ * A SashModel can have several windows containing panels separated by sashes. Such panels can be folders
+ * containing pages.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashModel#getWindows <em>Windows</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashModel#getCurrentSelection <em>Current Selection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashModel()
+ * @model
+ * @generated
+ */
+public interface SashModel extends EObject {
+ /**
+ * Returns the value of the '<em><b>Windows</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.sashwindows.di.Window}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Windows</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Windows</em>' containment reference list.
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashModel_Windows()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ EList<Window> getWindows();
+
+ /**
+ * Returns the value of the '<em><b>Current Selection</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Current Selection</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Current Selection</em>' reference.
+ * @see #setCurrentSelection(TabFolder)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashModel_CurrentSelection()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TabFolder getCurrentSelection();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.SashModel#getCurrentSelection <em>Current Selection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Current Selection</em>' reference.
+ * @see #getCurrentSelection()
+ * @generated
+ */
+ void setCurrentSelection(TabFolder value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ void addPage(Object pageIdentifier);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ void removePage(Object pageIdentifier);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Lookup the pageRef identified by the pageIdentifier.
+ * Return the pageRef or null if not found.
+ * Lookup in the entire SashModel structure.
+ * <!-- end-model-doc -->
+ * @model required="true" ordered="false" pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ PageRef lookupPage(Object pageIdentifier);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIndexDataType="org.eclipse.papyrus.sashwindows.di.int" pageIndexRequired="true" pageIndexOrdered="false" parentFolderRequired="true" parentFolderOrdered="false"
+ * @generated
+ */
+ void removePage(int pageIndex, TabFolder parentFolder);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model srcParentFolderRequired="true" srcParentFolderOrdered="false" srcIndexDataType="org.eclipse.papyrus.sashwindows.di.int" srcIndexRequired="true" srcIndexOrdered="false" targetParentFolderRequired="true" targetParentFolderOrdered="false" targetIndexRequired="true" targetIndexOrdered="false"
+ * @generated
+ */
+ void movePage(TabFolder srcParentFolder, int srcIndex, TabFolder targetParentFolder, int targetIndex);
+
+} // SashModel
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashPanel.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashPanel.java
new file mode 100644
index 00000000000..98c0e1f123c
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashPanel.java
@@ -0,0 +1,97 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sash Panel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getSashPosition <em>Sash Position</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getDirection <em>Direction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashPanel()
+ * @model
+ * @generated
+ */
+public interface SashPanel extends AbstractPanel {
+ /**
+ * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.sashwindows.di.AbstractPanel}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children</em>' containment reference list.
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashPanel_Children()
+ * @model containment="true" lower="2" upper="2" ordered="false"
+ * @generated
+ */
+ EList<AbstractPanel> getChildren();
+
+ /**
+ * Returns the value of the '<em><b>Sash Position</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Position of the sash in the panel. The position is in percent. The value should be between 0 and 100.
+ * <!-- end-model-doc -->
+ * @return the value of the '<em>Sash Position</em>' attribute.
+ * @see #setSashPosition(float)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashPanel_SashPosition()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.Float" required="true" ordered="false"
+ * @generated
+ */
+ float getSashPosition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getSashPosition <em>Sash Position</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sash Position</em>' attribute.
+ * @see #getSashPosition()
+ * @generated
+ */
+ void setSashPosition(float value);
+
+ /**
+ * Returns the value of the '<em><b>Direction</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Direction</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Direction</em>' attribute.
+ * @see #setDirection(int)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashPanel_Direction()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ int getDirection();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.SashPanel#getDirection <em>Direction</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Direction</em>' attribute.
+ * @see #getDirection()
+ * @generated
+ */
+ void setDirection(int value);
+
+} // SashPanel
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashWindowsMngr.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashWindowsMngr.java
new file mode 100644
index 00000000000..85e9128b35c
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/SashWindowsMngr.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sash Windows Mngr</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getPageList <em>Page List</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getSashModel <em>Sash Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashWindowsMngr()
+ * @model
+ * @generated
+ */
+public interface SashWindowsMngr extends EObject {
+ /**
+ * Returns the value of the '<em><b>Page List</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Page List</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>Page List</em>' containment reference.
+ * @see #setPageList(PageList)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashWindowsMngr_PageList()
+ * @model containment="true" required="true" ordered="false"
+ * @generated
+ */
+ PageList getPageList();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getPageList <em>Page List</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Page List</em>' containment reference.
+ * @see #getPageList()
+ * @generated
+ */
+ void setPageList(PageList value);
+
+ /**
+ * Returns the value of the '<em><b>Sash Model</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sash Model</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>Sash Model</em>' containment reference.
+ * @see #setSashModel(SashModel)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSashWindowsMngr_SashModel()
+ * @model containment="true" required="true" ordered="false"
+ * @generated
+ */
+ SashModel getSashModel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr#getSashModel <em>Sash Model</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sash Model</em>' containment reference.
+ * @see #getSashModel()
+ * @generated
+ */
+ void setSashModel(SashModel value);
+
+} // SashWindowsMngr
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Size.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Size.java
new file mode 100644
index 00000000000..b5e40771eea
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Size.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Size</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Size#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Size#getLength <em>Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSize()
+ * @model
+ * @generated
+ */
+public interface Size extends EObject {
+ /**
+ * Returns the value of the '<em><b>Width</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Width</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Width</em>' attribute.
+ * @see #setWidth(int)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSize_Width()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.int" required="true" ordered="false"
+ * @generated
+ */
+ int getWidth();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Size#getWidth <em>Width</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Width</em>' attribute.
+ * @see #getWidth()
+ * @generated
+ */
+ void setWidth(int value);
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see #setLength(int)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getSize_Length()
+ * @model unique="false" dataType="org.eclipse.papyrus.sashwindows.di.int" required="true" ordered="false"
+ * @generated
+ */
+ int getLength();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Size#getLength <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Length</em>' attribute.
+ * @see #getLength()
+ * @generated
+ */
+ void setLength(int value);
+
+} // Size
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/TabFolder.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/TabFolder.java
new file mode 100644
index 00000000000..0647d85df7e
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/TabFolder.java
@@ -0,0 +1,70 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tab Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.TabFolder#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getTabFolder()
+ * @model
+ * @generated
+ */
+public interface TabFolder extends AbstractPanel {
+ /**
+ * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.papyrus.sashwindows.di.PageRef}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.sashwindows.di.PageRef#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children</em>' containment reference list.
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getTabFolder_Children()
+ * @see org.eclipse.papyrus.sashwindows.di.PageRef#getParent
+ * @model opposite="parent" containment="true" ordered="false"
+ * @generated
+ */
+ EList<PageRef> getChildren();
+
+ /**
+ * Move the page inside the folder.
+ * @param oldIndex
+ * @param newIndex
+ * @generated
+ */
+ public void movePage(int oldIndex, int newIndex);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIdentifierDataType="org.eclipse.papyrus.sashwindows.di.JavaObject" pageIdentifierRequired="true" pageIdentifierOrdered="false"
+ * @generated
+ */
+ void addPage(Object pageIdentifier);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model pageIndexDataType="org.eclipse.papyrus.sashwindows.di.int" pageIndexRequired="true" pageIndexOrdered="false"
+ * @generated
+ */
+ void removePage(int pageIndex);
+
+} // TabFolder
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Window.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Window.java
new file mode 100644
index 00000000000..43f765906c3
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/Window.java
@@ -0,0 +1,109 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Window</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Window#getPanel <em>Panel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Window#getPosition <em>Position</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.Window#getSize <em>Size</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getWindow()
+ * @model
+ * @generated
+ */
+public interface Window extends AbstractNode {
+ /**
+ * Returns the value of the '<em><b>Panel</b></em>' containment reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow <em>Window</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Panel</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>Panel</em>' containment reference.
+ * @see #setPanel(AbstractPanel)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getWindow_Panel()
+ * @see org.eclipse.papyrus.sashwindows.di.AbstractPanel#getWindow
+ * @model opposite="window" containment="true" required="true" ordered="false"
+ * @generated
+ */
+ AbstractPanel getPanel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Window#getPanel <em>Panel</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Panel</em>' containment reference.
+ * @see #getPanel()
+ * @generated
+ */
+ void setPanel(AbstractPanel value);
+
+ /**
+ * Returns the value of the '<em><b>Position</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Position</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Position</em>' reference.
+ * @see #setPosition(Position)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getWindow_Position()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Position getPosition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Window#getPosition <em>Position</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Position</em>' reference.
+ * @see #getPosition()
+ * @generated
+ */
+ void setPosition(Position value);
+
+ /**
+ * Returns the value of the '<em><b>Size</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Size</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Size</em>' reference.
+ * @see #setSize(Size)
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#getWindow_Size()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Size getSize();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.sashwindows.di.Window#getSize <em>Size</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Size</em>' reference.
+ * @see #getSize()
+ * @generated
+ */
+ void setSize(Size value);
+
+} // Window
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractNodeImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractNodeImpl.java
new file mode 100644
index 00000000000..d26ec42abe1
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractNodeImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractNode;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractNodeImpl extends EObjectImpl implements AbstractNode {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractNodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.ABSTRACT_NODE;
+ }
+
+} //AbstractNodeImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPageImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPageImpl.java
new file mode 100644
index 00000000000..14731247efd
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPageImpl.java
@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.EObjectImpl;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractPage;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Page</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPageImpl#getPageIdentifier <em>Page Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AbstractPageImpl extends EObjectImpl implements AbstractPage {
+ /**
+ * The default value of the '{@link #getPageIdentifier() <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPageIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final Object PAGE_IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPageIdentifier() <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPageIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected Object pageIdentifier = PAGE_IDENTIFIER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractPageImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.ABSTRACT_PAGE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getPageIdentifier() {
+ return pageIdentifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPageIdentifier(Object newPageIdentifier) {
+ Object oldPageIdentifier = pageIdentifier;
+ pageIdentifier = newPageIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.ABSTRACT_PAGE__PAGE_IDENTIFIER, oldPageIdentifier, pageIdentifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PAGE__PAGE_IDENTIFIER:
+ return getPageIdentifier();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PAGE__PAGE_IDENTIFIER:
+ setPageIdentifier(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PAGE__PAGE_IDENTIFIER:
+ setPageIdentifier(PAGE_IDENTIFIER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PAGE__PAGE_IDENTIFIER:
+ return PAGE_IDENTIFIER_EDEFAULT == null ? pageIdentifier != null : !PAGE_IDENTIFIER_EDEFAULT.equals(pageIdentifier);
+ }
+ 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(" (pageIdentifier: ");
+ result.append(pageIdentifier);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AbstractPageImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPanelImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPanelImpl.java
new file mode 100644
index 00000000000..69a9e9c64e0
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/AbstractPanelImpl.java
@@ -0,0 +1,260 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.util.EcoreUtil;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractNode;
+import org.eclipse.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.Window;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Panel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.AbstractPanelImpl#getWindow <em>Window</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractPanelImpl extends AbstractNodeImpl implements AbstractPanel {
+ /**
+ * The cached value of the '{@link #getParent() <em>Parent</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getParent()
+ * @generated
+ * @ordered
+ */
+ protected AbstractNode parent;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractPanelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.ABSTRACT_PANEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractNode getParent() {
+ if (parent != null && parent.eIsProxy()) {
+ InternalEObject oldParent = (InternalEObject)parent;
+ parent = (AbstractNode)eResolveProxy(oldParent);
+ if (parent != oldParent) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DiPackage.ABSTRACT_PANEL__PARENT, oldParent, parent));
+ }
+ }
+ return parent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractNode basicGetParent() {
+ return parent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParent(AbstractNode newParent) {
+ AbstractNode oldParent = parent;
+ parent = newParent;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.ABSTRACT_PANEL__PARENT, oldParent, parent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Window getWindow() {
+ if (eContainerFeatureID() != DiPackage.ABSTRACT_PANEL__WINDOW) return null;
+ return (Window)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetWindow(Window newWindow, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newWindow, DiPackage.ABSTRACT_PANEL__WINDOW, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setWindow(Window newWindow) {
+ if (newWindow != eInternalContainer() || (eContainerFeatureID() != DiPackage.ABSTRACT_PANEL__WINDOW && newWindow != null)) {
+ if (EcoreUtil.isAncestor(this, newWindow))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newWindow != null)
+ msgs = ((InternalEObject)newWindow).eInverseAdd(this, DiPackage.WINDOW__PANEL, Window.class, msgs);
+ msgs = basicSetWindow(newWindow, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.ABSTRACT_PANEL__WINDOW, newWindow, newWindow));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetWindow((Window)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ return basicSetWindow(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ return eInternalContainer().eInverseRemove(this, DiPackage.WINDOW__PANEL, Window.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__PARENT:
+ if (resolve) return getParent();
+ return basicGetParent();
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ return getWindow();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__PARENT:
+ setParent((AbstractNode)newValue);
+ return;
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ setWindow((Window)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__PARENT:
+ setParent((AbstractNode)null);
+ return;
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ setWindow((Window)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.ABSTRACT_PANEL__PARENT:
+ return parent != null;
+ case DiPackage.ABSTRACT_PANEL__WINDOW:
+ return getWindow() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //AbstractPanelImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiFactoryImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiFactoryImpl.java
new file mode 100644
index 00000000000..fc633e01921
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiFactoryImpl.java
@@ -0,0 +1,313 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.sashwindows.di.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DiFactoryImpl extends EFactoryImpl implements DiFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DiFactory init() {
+ try {
+ DiFactory theDiFactory = (DiFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/papyrus/0.7.0/sashdi");
+ if (theDiFactory != null) {
+ return theDiFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new DiFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case DiPackage.SASH_MODEL: return createSashModel();
+ case DiPackage.WINDOW: return createWindow();
+ case DiPackage.POSITION: return createPosition();
+ case DiPackage.SIZE: return createSize();
+ case DiPackage.TAB_FOLDER: return createTabFolder();
+ case DiPackage.PAGE_REF: return createPageRef();
+ case DiPackage.SASH_PANEL: return createSashPanel();
+ case DiPackage.ABSTRACT_PAGE: return createAbstractPage();
+ case DiPackage.PAGE_LIST: return createPageList();
+ case DiPackage.SASH_WINDOWS_MNGR: return createSashWindowsMngr();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case DiPackage.INT:
+ return createintFromString(eDataType, initialValue);
+ case DiPackage.JAVA_OBJECT:
+ return createJavaObjectFromString(eDataType, initialValue);
+ case DiPackage.FLOAT:
+ return createFloatFromString(eDataType, initialValue);
+ case DiPackage.BOOLEAN:
+ return createbooleanFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case DiPackage.INT:
+ return convertintToString(eDataType, instanceValue);
+ case DiPackage.JAVA_OBJECT:
+ return convertJavaObjectToString(eDataType, instanceValue);
+ case DiPackage.FLOAT:
+ return convertFloatToString(eDataType, instanceValue);
+ case DiPackage.BOOLEAN:
+ return convertbooleanToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SashModel createSashModel() {
+ SashModelImpl sashModel = new SashModelImpl();
+ return sashModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Window createWindow() {
+ WindowImpl window = new WindowImpl();
+ return window;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Position createPosition() {
+ PositionImpl position = new PositionImpl();
+ return position;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Size createSize() {
+ SizeImpl size = new SizeImpl();
+ return size;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TabFolder createTabFolder() {
+ TabFolderImpl tabFolder = new TabFolderImpl();
+ return tabFolder;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PageRef createPageRef() {
+ PageRefImpl pageRef = new PageRefImpl();
+ return pageRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SashPanel createSashPanel() {
+ SashPanelImpl sashPanel = new SashPanelImpl();
+ return sashPanel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractPage createAbstractPage() {
+ AbstractPageImpl abstractPage = new AbstractPageImpl();
+ return abstractPage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PageList createPageList() {
+ PageListImpl pageList = new PageListImpl();
+ return pageList;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SashWindowsMngr createSashWindowsMngr() {
+ SashWindowsMngrImpl sashWindowsMngr = new SashWindowsMngrImpl();
+ return sashWindowsMngr;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Integer createintFromString(EDataType eDataType, String initialValue) {
+ return (Integer)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertintToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object createJavaObjectFromString(EDataType eDataType, String initialValue) {
+ return super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertJavaObjectToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Float createFloatFromString(EDataType eDataType, String initialValue) {
+ return (Float)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertFloatToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Boolean createbooleanFromString(EDataType eDataType, String initialValue) {
+ return (Boolean)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertbooleanToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiPackage getDiPackage() {
+ return (DiPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static DiPackage getPackage() {
+ return DiPackage.eINSTANCE;
+ }
+
+} //DiFactoryImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiPackageImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiPackageImpl.java
new file mode 100644
index 00000000000..892e5df9ab9
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/DiPackageImpl.java
@@ -0,0 +1,760 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractNode;
+import org.eclipse.papyrus.sashwindows.di.AbstractPage;
+import org.eclipse.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.Position;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashPanel;
+import org.eclipse.papyrus.sashwindows.di.SashWindowsMngr;
+import org.eclipse.papyrus.sashwindows.di.Size;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.sashwindows.di.Window;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DiPackageImpl extends EPackageImpl implements DiPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sashModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass windowEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractPanelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass positionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sizeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tabFolderEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass pageRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sashPanelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractPageEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass pageListEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sashWindowsMngrEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType intEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType javaObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType floatEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType booleanEDataType = 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.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private DiPackageImpl() {
+ super(eNS_URI, DiFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static DiPackage init() {
+ if (isInited) return (DiPackage)EPackage.Registry.INSTANCE.getEPackage(DiPackage.eNS_URI);
+
+ // Obtain or create and register package
+ DiPackageImpl theDiPackage = (DiPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof DiPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new DiPackageImpl());
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theDiPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theDiPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theDiPackage.freeze();
+
+ return theDiPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSashModel() {
+ return sashModelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSashModel_Windows() {
+ return (EReference)sashModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSashModel_CurrentSelection() {
+ return (EReference)sashModelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getWindow() {
+ return windowEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWindow_Panel() {
+ return (EReference)windowEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWindow_Position() {
+ return (EReference)windowEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWindow_Size() {
+ return (EReference)windowEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractNode() {
+ return abstractNodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractPanel() {
+ return abstractPanelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractPanel_Parent() {
+ return (EReference)abstractPanelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractPanel_Window() {
+ return (EReference)abstractPanelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPosition() {
+ return positionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPosition_X() {
+ return (EAttribute)positionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPosition_Y() {
+ return (EAttribute)positionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSize() {
+ return sizeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSize_Width() {
+ return (EAttribute)sizeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSize_Length() {
+ return (EAttribute)sizeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTabFolder() {
+ return tabFolderEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTabFolder_Children() {
+ return (EReference)tabFolderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPageRef() {
+ return pageRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPageRef_PageIdentifier() {
+ return (EAttribute)pageRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPageRef_Parent() {
+ return (EReference)pageRefEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSashPanel() {
+ return sashPanelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSashPanel_Children() {
+ return (EReference)sashPanelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSashPanel_SashPosition() {
+ return (EAttribute)sashPanelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSashPanel_Direction() {
+ return (EAttribute)sashPanelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractPage() {
+ return abstractPageEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractPage_PageIdentifier() {
+ return (EAttribute)abstractPageEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPageList() {
+ return pageListEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPageList_AvailablePage() {
+ return (EReference)pageListEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSashWindowsMngr() {
+ return sashWindowsMngrEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSashWindowsMngr_PageList() {
+ return (EReference)sashWindowsMngrEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSashWindowsMngr_SashModel() {
+ return (EReference)sashWindowsMngrEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getint() {
+ return intEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getJavaObject() {
+ return javaObjectEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getFloat() {
+ return floatEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getboolean() {
+ return booleanEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiFactory getDiFactory() {
+ return (DiFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ sashModelEClass = createEClass(SASH_MODEL);
+ createEReference(sashModelEClass, SASH_MODEL__WINDOWS);
+ createEReference(sashModelEClass, SASH_MODEL__CURRENT_SELECTION);
+
+ windowEClass = createEClass(WINDOW);
+ createEReference(windowEClass, WINDOW__PANEL);
+ createEReference(windowEClass, WINDOW__POSITION);
+ createEReference(windowEClass, WINDOW__SIZE);
+
+ abstractNodeEClass = createEClass(ABSTRACT_NODE);
+
+ abstractPanelEClass = createEClass(ABSTRACT_PANEL);
+ createEReference(abstractPanelEClass, ABSTRACT_PANEL__PARENT);
+ createEReference(abstractPanelEClass, ABSTRACT_PANEL__WINDOW);
+
+ positionEClass = createEClass(POSITION);
+ createEAttribute(positionEClass, POSITION__X);
+ createEAttribute(positionEClass, POSITION__Y);
+
+ sizeEClass = createEClass(SIZE);
+ createEAttribute(sizeEClass, SIZE__WIDTH);
+ createEAttribute(sizeEClass, SIZE__LENGTH);
+
+ tabFolderEClass = createEClass(TAB_FOLDER);
+ createEReference(tabFolderEClass, TAB_FOLDER__CHILDREN);
+
+ pageRefEClass = createEClass(PAGE_REF);
+ createEAttribute(pageRefEClass, PAGE_REF__PAGE_IDENTIFIER);
+ createEReference(pageRefEClass, PAGE_REF__PARENT);
+
+ sashPanelEClass = createEClass(SASH_PANEL);
+ createEReference(sashPanelEClass, SASH_PANEL__CHILDREN);
+ createEAttribute(sashPanelEClass, SASH_PANEL__SASH_POSITION);
+ createEAttribute(sashPanelEClass, SASH_PANEL__DIRECTION);
+
+ abstractPageEClass = createEClass(ABSTRACT_PAGE);
+ createEAttribute(abstractPageEClass, ABSTRACT_PAGE__PAGE_IDENTIFIER);
+
+ pageListEClass = createEClass(PAGE_LIST);
+ createEReference(pageListEClass, PAGE_LIST__AVAILABLE_PAGE);
+
+ sashWindowsMngrEClass = createEClass(SASH_WINDOWS_MNGR);
+ createEReference(sashWindowsMngrEClass, SASH_WINDOWS_MNGR__PAGE_LIST);
+ createEReference(sashWindowsMngrEClass, SASH_WINDOWS_MNGR__SASH_MODEL);
+
+ // Create data types
+ intEDataType = createEDataType(INT);
+ javaObjectEDataType = createEDataType(JAVA_OBJECT);
+ floatEDataType = createEDataType(FLOAT);
+ booleanEDataType = createEDataType(BOOLEAN);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ windowEClass.getESuperTypes().add(this.getAbstractNode());
+ abstractPanelEClass.getESuperTypes().add(this.getAbstractNode());
+ tabFolderEClass.getESuperTypes().add(this.getAbstractPanel());
+ sashPanelEClass.getESuperTypes().add(this.getAbstractPanel());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(sashModelEClass, SashModel.class, "SashModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSashModel_Windows(), this.getWindow(), null, "windows", null, 0, -1, SashModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getSashModel_CurrentSelection(), this.getTabFolder(), null, "currentSelection", null, 1, 1, SashModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ EOperation op = addEOperation(sashModelEClass, null, "addPage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(sashModelEClass, null, "removePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(sashModelEClass, this.getPageRef(), "lookupPage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(sashModelEClass, null, "removePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getint(), "pageIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getTabFolder(), "parentFolder", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(sashModelEClass, null, "movePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getTabFolder(), "srcParentFolder", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getint(), "srcIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getTabFolder(), "targetParentFolder", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, ecorePackage.getEInt(), "targetIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(windowEClass, Window.class, "Window", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getWindow_Panel(), this.getAbstractPanel(), this.getAbstractPanel_Window(), "panel", null, 1, 1, Window.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getWindow_Position(), this.getPosition(), null, "position", null, 1, 1, Window.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getWindow_Size(), this.getSize(), null, "size", null, 1, 1, Window.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(abstractNodeEClass, AbstractNode.class, "AbstractNode", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(abstractPanelEClass, AbstractPanel.class, "AbstractPanel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractPanel_Parent(), this.getAbstractNode(), null, "parent", null, 1, 1, AbstractPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getAbstractPanel_Window(), this.getWindow(), this.getWindow_Panel(), "window", null, 1, 1, AbstractPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(positionEClass, Position.class, "Position", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPosition_X(), ecorePackage.getEInt(), "x", null, 1, 1, Position.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPosition_Y(), this.getint(), "y", null, 1, 1, Position.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(sizeEClass, Size.class, "Size", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getSize_Width(), this.getint(), "width", null, 1, 1, Size.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSize_Length(), this.getint(), "length", null, 1, 1, Size.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(tabFolderEClass, TabFolder.class, "TabFolder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTabFolder_Children(), this.getPageRef(), this.getPageRef_Parent(), "children", null, 0, -1, TabFolder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = addEOperation(tabFolderEClass, null, "movePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, ecorePackage.getEInt(), "oldIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getint(), "newIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(tabFolderEClass, null, "addPage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(tabFolderEClass, null, "removePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getint(), "pageIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(pageRefEClass, PageRef.class, "PageRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPageRef_PageIdentifier(), this.getJavaObject(), "pageIdentifier", null, 1, 1, PageRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPageRef_Parent(), this.getTabFolder(), this.getTabFolder_Children(), "parent", null, 1, 1, PageRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = addEOperation(pageRefEClass, ecorePackage.getEBoolean(), "isForIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(sashPanelEClass, SashPanel.class, "SashPanel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSashPanel_Children(), this.getAbstractPanel(), null, "children", null, 2, 2, SashPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSashPanel_SashPosition(), this.getFloat(), "sashPosition", null, 1, 1, SashPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSashPanel_Direction(), ecorePackage.getEInt(), "direction", null, 1, 1, SashPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(abstractPageEClass, AbstractPage.class, "AbstractPage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractPage_PageIdentifier(), this.getJavaObject(), "pageIdentifier", null, 1, 1, AbstractPage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(pageListEClass, PageList.class, "PageList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPageList_AvailablePage(), this.getPageRef(), null, "availablePage", null, 0, -1, PageList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ op = addEOperation(pageListEClass, null, "addPage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ op = addEOperation(pageListEClass, null, "removePage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+ addEParameter(op, this.getJavaObject(), "pageIdentifier", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+ initEClass(sashWindowsMngrEClass, SashWindowsMngr.class, "SashWindowsMngr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSashWindowsMngr_PageList(), this.getPageList(), null, "pageList", null, 1, 1, SashWindowsMngr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getSashWindowsMngr_SashModel(), this.getSashModel(), null, "sashModel", null, 1, 1, SashWindowsMngr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Initialize data types
+ initEDataType(intEDataType, int.class, "int", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(javaObjectEDataType, Object.class, "JavaObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(floatEDataType, float.class, "Float", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(booleanEDataType, boolean.class, "boolean", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //DiPackageImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java
new file mode 100644
index 00000000000..b44f7b186ad
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageListImpl.java
@@ -0,0 +1,182 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Page List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageListImpl#getAvailablePage <em>Available Page</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PageListImpl extends EObjectImpl implements PageList {
+ /**
+ * The cached value of the '{@link #getAvailablePage() <em>Available Page</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAvailablePage()
+ * @generated
+ * @ordered
+ */
+ protected EList<PageRef> availablePage;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PageListImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.PAGE_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<PageRef> getAvailablePage() {
+ if (availablePage == null) {
+ availablePage = new EObjectContainmentEList<PageRef>(PageRef.class, this, DiPackage.PAGE_LIST__AVAILABLE_PAGE);
+ }
+ return availablePage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+
+ PageRef pageRef = DiFactory.eINSTANCE.createPageRef();
+ pageRef.setPageIdentifier(pageIdentifier);
+ getAvailablePage().add(pageRef);
+
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(Object pageIdentifier) {
+ for( PageRef pageRef : getAvailablePage() )
+ {
+
+ if(pageRef.getPageIdentifier().equals(pageIdentifier))
+ {
+ getAvailablePage().remove(pageRef);
+ return ;
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.PAGE_LIST__AVAILABLE_PAGE:
+ return ((InternalEList<?>)getAvailablePage()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.PAGE_LIST__AVAILABLE_PAGE:
+ return getAvailablePage();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.PAGE_LIST__AVAILABLE_PAGE:
+ getAvailablePage().clear();
+ getAvailablePage().addAll((Collection<? extends PageRef>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.PAGE_LIST__AVAILABLE_PAGE:
+ getAvailablePage().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.PAGE_LIST__AVAILABLE_PAGE:
+ return availablePage != null && !availablePage.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PageListImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java
new file mode 100644
index 00000000000..d8aeba1b1a3
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PageRefImpl.java
@@ -0,0 +1,277 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Page Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl#getPageIdentifier <em>Page Identifier</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PageRefImpl#getParent <em>Parent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PageRefImpl extends EObjectImpl implements PageRef {
+ /**
+ * The default value of the '{@link #getPageIdentifier() <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPageIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final Object PAGE_IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPageIdentifier() <em>Page Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPageIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected Object pageIdentifier = PAGE_IDENTIFIER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PageRefImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.PAGE_REF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getPageIdentifier() {
+ return pageIdentifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPageIdentifier(Object newPageIdentifier) {
+ Object oldPageIdentifier = pageIdentifier;
+ pageIdentifier = newPageIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.PAGE_REF__PAGE_IDENTIFIER, oldPageIdentifier, pageIdentifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TabFolder getParent() {
+ if (eContainerFeatureID() != DiPackage.PAGE_REF__PARENT) return null;
+ return (TabFolder)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetParent(TabFolder newParent, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newParent, DiPackage.PAGE_REF__PARENT, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParent(TabFolder newParent) {
+ if (newParent != eInternalContainer() || (eContainerFeatureID() != DiPackage.PAGE_REF__PARENT && newParent != null)) {
+ if (EcoreUtil.isAncestor(this, newParent))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newParent != null)
+ msgs = ((InternalEObject)newParent).eInverseAdd(this, DiPackage.TAB_FOLDER__CHILDREN, TabFolder.class, msgs);
+ msgs = basicSetParent(newParent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.PAGE_REF__PARENT, newParent, newParent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isForIdentifier(Object pageIdentifier) {
+ return getPageIdentifier().equals(pageIdentifier);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PARENT:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetParent((TabFolder)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PARENT:
+ return basicSetParent(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case DiPackage.PAGE_REF__PARENT:
+ return eInternalContainer().eInverseRemove(this, DiPackage.TAB_FOLDER__CHILDREN, TabFolder.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PAGE_IDENTIFIER:
+ return getPageIdentifier();
+ case DiPackage.PAGE_REF__PARENT:
+ return getParent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PAGE_IDENTIFIER:
+ setPageIdentifier(newValue);
+ return;
+ case DiPackage.PAGE_REF__PARENT:
+ setParent((TabFolder)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PAGE_IDENTIFIER:
+ setPageIdentifier(PAGE_IDENTIFIER_EDEFAULT);
+ return;
+ case DiPackage.PAGE_REF__PARENT:
+ setParent((TabFolder)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.PAGE_REF__PAGE_IDENTIFIER:
+ return PAGE_IDENTIFIER_EDEFAULT == null ? pageIdentifier != null : !PAGE_IDENTIFIER_EDEFAULT.equals(pageIdentifier);
+ case DiPackage.PAGE_REF__PARENT:
+ return getParent() != 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(" (pageIdentifier: ");
+ result.append(pageIdentifier);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PageRefImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PositionImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PositionImpl.java
new file mode 100644
index 00000000000..8e0cdaf1284
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/PositionImpl.java
@@ -0,0 +1,221 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.EObjectImpl;
+
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.Position;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Position</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PositionImpl#getX <em>X</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.PositionImpl#getY <em>Y</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PositionImpl extends EObjectImpl implements Position {
+ /**
+ * The default value of the '{@link #getX() <em>X</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getX()
+ * @generated
+ * @ordered
+ */
+ protected static final int X_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getX() <em>X</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getX()
+ * @generated
+ * @ordered
+ */
+ protected int x = X_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getY() <em>Y</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getY()
+ * @generated
+ * @ordered
+ */
+ protected static final int Y_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getY() <em>Y</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getY()
+ * @generated
+ * @ordered
+ */
+ protected int y = Y_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PositionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.POSITION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getX() {
+ return x;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setX(int newX) {
+ int oldX = x;
+ x = newX;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.POSITION__X, oldX, x));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getY() {
+ return y;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setY(int newY) {
+ int oldY = y;
+ y = newY;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.POSITION__Y, oldY, y));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.POSITION__X:
+ return getX();
+ case DiPackage.POSITION__Y:
+ return getY();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.POSITION__X:
+ setX((Integer)newValue);
+ return;
+ case DiPackage.POSITION__Y:
+ setY((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.POSITION__X:
+ setX(X_EDEFAULT);
+ return;
+ case DiPackage.POSITION__Y:
+ setY(Y_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.POSITION__X:
+ return x != X_EDEFAULT;
+ case DiPackage.POSITION__Y:
+ return y != Y_EDEFAULT;
+ }
+ 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(" (x: ");
+ result.append(x);
+ result.append(", y: ");
+ result.append(y);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PositionImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java
new file mode 100644
index 00000000000..282e3a4f34f
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashModelImpl.java
@@ -0,0 +1,347 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+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.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashPanel;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.sashwindows.di.Window;
+import org.eclipse.papyrus.sashwindows.di.util.DiSwitch;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sash Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl#getWindows <em>Windows</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl#getCurrentSelection <em>Current Selection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SashModelImpl extends EObjectImpl implements SashModel {
+ /**
+ * The cached value of the '{@link #getWindows() <em>Windows</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getWindows()
+ * @generated
+ * @ordered
+ */
+ protected EList<Window> windows;
+ /**
+ * The cached value of the '{@link #getCurrentSelection() <em>Current Selection</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCurrentSelection()
+ * @generated
+ * @ordered
+ */
+ protected TabFolder currentSelection;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SashModelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.SASH_MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Window> getWindows() {
+ if (windows == null) {
+ windows = new EObjectContainmentEList<Window>(Window.class, this, DiPackage.SASH_MODEL__WINDOWS);
+ }
+ return windows;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TabFolder getCurrentSelection() {
+ if (currentSelection != null && currentSelection.eIsProxy()) {
+ InternalEObject oldCurrentSelection = (InternalEObject)currentSelection;
+ currentSelection = (TabFolder)eResolveProxy(oldCurrentSelection);
+ if (currentSelection != oldCurrentSelection) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DiPackage.SASH_MODEL__CURRENT_SELECTION, oldCurrentSelection, currentSelection));
+ }
+ }
+ return currentSelection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TabFolder basicGetCurrentSelection() {
+ return currentSelection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentSelection(TabFolder newCurrentSelection) {
+ TabFolder oldCurrentSelection = currentSelection;
+ currentSelection = newCurrentSelection;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_MODEL__CURRENT_SELECTION, oldCurrentSelection, currentSelection));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+ getCurrentSelection().addPage(pageIdentifier);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(Object pageIdentifier) {
+ PageRef pageRef = lookupPage(pageIdentifier);
+ if(pageRef == null)
+ return;
+
+ // Remove it
+ pageRef.getParent().getChildren().remove(pageRef);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public PageRef lookupPage(final Object pageIdentifier) {
+
+ // Create appropriate visitor.
+ DiSwitch<PageRef> visitor = new DiSwitch<PageRef>( ) {
+
+ /**
+ * Iterate over windows
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseSashModel(org.eclipse.papyrus.sashwindows.di.SashModel)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseSashModel(SashModel object) {
+ PageRef res = null;
+ for( Window window : object.getWindows() )
+ {
+ res = this.doSwitch(window);
+ if(res != null)
+ return res;
+ }
+
+ return super.caseSashModel(object);
+ }
+
+ /**
+ * Iterate over children
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseSashPanel(org.eclipse.papyrus.sashwindows.di.SashPanel)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseSashPanel(SashPanel object) {
+ PageRef res = null;
+ for( AbstractPanel panel : object.getChildren() )
+ {
+ res = this.doSwitch(panel);
+ if(res != null)
+ return res;
+ }
+
+ return super.caseSashPanel(object);
+ }
+
+ /**
+ * Iterate over PageRef
+ * @see org.eclipse.papyrus.sashwindows.di.util.DiSwitch#caseTabFolder(org.eclipse.papyrus.sashwindows.di.TabFolder)
+ *
+ * @param object
+ * @return
+ */
+ public PageRef caseTabFolder(TabFolder object) {
+ for( PageRef pageRef : object.getChildren() )
+ {
+
+ if(pageRef.isForIdentifier(pageIdentifier) )
+ return pageRef;
+ }
+
+ return super.caseTabFolder(object);
+ }
+ };
+
+ // Do lookup
+ PageRef res = visitor.doSwitch(this);
+
+ return res;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removePage(int pageIndex, TabFolder parentFolder) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void movePage(TabFolder srcParentFolder, int srcIndex, TabFolder targetParentFolder, int targetIndex) {
+
+ PageRef pageRef = srcParentFolder.getChildren().remove(srcIndex);
+
+ List<PageRef> targetChildrens = targetParentFolder.getChildren();
+ // Check if out of target range.
+ if( targetIndex<0 || targetIndex > targetChildrens.size())
+ targetChildrens.add(pageRef);
+ else
+ targetChildrens.add(targetIndex, pageRef);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.SASH_MODEL__WINDOWS:
+ return ((InternalEList<?>)getWindows()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.SASH_MODEL__WINDOWS:
+ return getWindows();
+ case DiPackage.SASH_MODEL__CURRENT_SELECTION:
+ if (resolve) return getCurrentSelection();
+ return basicGetCurrentSelection();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.SASH_MODEL__WINDOWS:
+ getWindows().clear();
+ getWindows().addAll((Collection<? extends Window>)newValue);
+ return;
+ case DiPackage.SASH_MODEL__CURRENT_SELECTION:
+ setCurrentSelection((TabFolder)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_MODEL__WINDOWS:
+ getWindows().clear();
+ return;
+ case DiPackage.SASH_MODEL__CURRENT_SELECTION:
+ setCurrentSelection((TabFolder)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_MODEL__WINDOWS:
+ return windows != null && !windows.isEmpty();
+ case DiPackage.SASH_MODEL__CURRENT_SELECTION:
+ return currentSelection != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SashModelImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashPanelImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashPanelImpl.java
new file mode 100644
index 00000000000..4c51e9e6870
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashPanelImpl.java
@@ -0,0 +1,279 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.SashPanel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sash Panel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl#getSashPosition <em>Sash Position</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashPanelImpl#getDirection <em>Direction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SashPanelImpl extends AbstractPanelImpl implements SashPanel {
+ /**
+ * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractPanel> children;
+
+ /**
+ * The default value of the '{@link #getSashPosition() <em>Sash Position</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSashPosition()
+ * @generated
+ * @ordered
+ */
+ protected static final float SASH_POSITION_EDEFAULT = 0.0F;
+
+ /**
+ * The cached value of the '{@link #getSashPosition() <em>Sash Position</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSashPosition()
+ * @generated
+ * @ordered
+ */
+ protected float sashPosition = SASH_POSITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDirection()
+ * @generated
+ * @ordered
+ */
+ protected static final int DIRECTION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDirection()
+ * @generated
+ * @ordered
+ */
+ protected int direction = DIRECTION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SashPanelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.SASH_PANEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractPanel> getChildren() {
+ if (children == null) {
+ children = new EObjectContainmentEList<AbstractPanel>(AbstractPanel.class, this, DiPackage.SASH_PANEL__CHILDREN);
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public float getSashPosition() {
+ return sashPosition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSashPosition(float newSashPosition) {
+ float oldSashPosition = sashPosition;
+ sashPosition = newSashPosition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_PANEL__SASH_POSITION, oldSashPosition, sashPosition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getDirection() {
+ return direction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDirection(int newDirection) {
+ int oldDirection = direction;
+ direction = newDirection;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_PANEL__DIRECTION, oldDirection, direction));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.SASH_PANEL__CHILDREN:
+ return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.SASH_PANEL__CHILDREN:
+ return getChildren();
+ case DiPackage.SASH_PANEL__SASH_POSITION:
+ return getSashPosition();
+ case DiPackage.SASH_PANEL__DIRECTION:
+ return getDirection();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.SASH_PANEL__CHILDREN:
+ getChildren().clear();
+ getChildren().addAll((Collection<? extends AbstractPanel>)newValue);
+ return;
+ case DiPackage.SASH_PANEL__SASH_POSITION:
+ setSashPosition((Float)newValue);
+ return;
+ case DiPackage.SASH_PANEL__DIRECTION:
+ setDirection((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_PANEL__CHILDREN:
+ getChildren().clear();
+ return;
+ case DiPackage.SASH_PANEL__SASH_POSITION:
+ setSashPosition(SASH_POSITION_EDEFAULT);
+ return;
+ case DiPackage.SASH_PANEL__DIRECTION:
+ setDirection(DIRECTION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_PANEL__CHILDREN:
+ return children != null && !children.isEmpty();
+ case DiPackage.SASH_PANEL__SASH_POSITION:
+ return sashPosition != SASH_POSITION_EDEFAULT;
+ case DiPackage.SASH_PANEL__DIRECTION:
+ return direction != DIRECTION_EDEFAULT;
+ }
+ 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(" (sashPosition: ");
+ result.append(sashPosition);
+ result.append(", direction: ");
+ result.append(direction);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SashPanelImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashWindowsMngrImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashWindowsMngrImpl.java
new file mode 100644
index 00000000000..d952bb533d6
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SashWindowsMngrImpl.java
@@ -0,0 +1,247 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashWindowsMngr;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sash Windows Mngr</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl#getPageList <em>Page List</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SashWindowsMngrImpl#getSashModel <em>Sash Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SashWindowsMngrImpl extends EObjectImpl implements SashWindowsMngr {
+ /**
+ * The cached value of the '{@link #getPageList() <em>Page List</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPageList()
+ * @generated
+ * @ordered
+ */
+ protected PageList pageList;
+
+ /**
+ * The cached value of the '{@link #getSashModel() <em>Sash Model</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSashModel()
+ * @generated
+ * @ordered
+ */
+ protected SashModel sashModel;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SashWindowsMngrImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.SASH_WINDOWS_MNGR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PageList getPageList() {
+ return pageList;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPageList(PageList newPageList, NotificationChain msgs) {
+ PageList oldPageList = pageList;
+ pageList = newPageList;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST, oldPageList, newPageList);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPageList(PageList newPageList) {
+ if (newPageList != pageList) {
+ NotificationChain msgs = null;
+ if (pageList != null)
+ msgs = ((InternalEObject)pageList).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST, null, msgs);
+ if (newPageList != null)
+ msgs = ((InternalEObject)newPageList).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST, null, msgs);
+ msgs = basicSetPageList(newPageList, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST, newPageList, newPageList));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SashModel getSashModel() {
+ return sashModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSashModel(SashModel newSashModel, NotificationChain msgs) {
+ SashModel oldSashModel = sashModel;
+ sashModel = newSashModel;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL, oldSashModel, newSashModel);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSashModel(SashModel newSashModel) {
+ if (newSashModel != sashModel) {
+ NotificationChain msgs = null;
+ if (sashModel != null)
+ msgs = ((InternalEObject)sashModel).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL, null, msgs);
+ if (newSashModel != null)
+ msgs = ((InternalEObject)newSashModel).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL, null, msgs);
+ msgs = basicSetSashModel(newSashModel, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL, newSashModel, newSashModel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST:
+ return basicSetPageList(null, msgs);
+ case DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL:
+ return basicSetSashModel(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 DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST:
+ return getPageList();
+ case DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL:
+ return getSashModel();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST:
+ setPageList((PageList)newValue);
+ return;
+ case DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL:
+ setSashModel((SashModel)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST:
+ setPageList((PageList)null);
+ return;
+ case DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL:
+ setSashModel((SashModel)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.SASH_WINDOWS_MNGR__PAGE_LIST:
+ return pageList != null;
+ case DiPackage.SASH_WINDOWS_MNGR__SASH_MODEL:
+ return sashModel != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SashWindowsMngrImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SizeImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SizeImpl.java
new file mode 100644
index 00000000000..f650039613d
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/SizeImpl.java
@@ -0,0 +1,221 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.EObjectImpl;
+
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.Size;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Size</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SizeImpl#getWidth <em>Width</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.SizeImpl#getLength <em>Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SizeImpl extends EObjectImpl implements Size {
+ /**
+ * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getWidth()
+ * @generated
+ * @ordered
+ */
+ protected static final int WIDTH_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getWidth()
+ * @generated
+ * @ordered
+ */
+ protected int width = WIDTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected int length = LENGTH_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SizeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.SIZE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getWidth() {
+ return width;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setWidth(int newWidth) {
+ int oldWidth = width;
+ width = newWidth;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SIZE__WIDTH, oldWidth, width));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLength(int newLength) {
+ int oldLength = length;
+ length = newLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.SIZE__LENGTH, oldLength, length));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.SIZE__WIDTH:
+ return getWidth();
+ case DiPackage.SIZE__LENGTH:
+ return getLength();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.SIZE__WIDTH:
+ setWidth((Integer)newValue);
+ return;
+ case DiPackage.SIZE__LENGTH:
+ setLength((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.SIZE__WIDTH:
+ setWidth(WIDTH_EDEFAULT);
+ return;
+ case DiPackage.SIZE__LENGTH:
+ setLength(LENGTH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.SIZE__WIDTH:
+ return width != WIDTH_EDEFAULT;
+ case DiPackage.SIZE__LENGTH:
+ return length != LENGTH_EDEFAULT;
+ }
+ 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(" (width: ");
+ result.append(width);
+ result.append(", length: ");
+ result.append(length);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SizeImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java
new file mode 100644
index 00000000000..41aa097c0d4
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/TabFolderImpl.java
@@ -0,0 +1,216 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.PageRef;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tab Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TabFolderImpl extends AbstractPanelImpl implements TabFolder {
+
+ /**
+ * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected EList<PageRef> children;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TabFolderImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.TAB_FOLDER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<PageRef> getChildren() {
+ if (children == null) {
+ children = new EObjectContainmentWithInverseEList<PageRef>(PageRef.class, this, DiPackage.TAB_FOLDER__CHILDREN, DiPackage.PAGE_REF__PARENT);
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void addPage(Object pageIdentifier) {
+ PageRef newPage = DiFactory.eINSTANCE.createPageRef();
+ newPage.setPageIdentifier(pageIdentifier);
+ getChildren().add(newPage);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void removePage(int pageIndex) {
+ getChildren().remove(pageIndex);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ return getChildren();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ getChildren().clear();
+ getChildren().addAll((Collection<? extends PageRef>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ getChildren().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.TAB_FOLDER__CHILDREN:
+ return children != null && !children.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.sashwindows.di.TabFolder#movePage(int, int)
+ *
+ * @param oldIndex
+ * @param newIndex
+ * @generated NOT
+ */
+ public void movePage(int oldIndex, int newIndex) {
+ int listSize = getChildren().size();
+ if (newIndex >= listSize)
+ {
+ newIndex = listSize-1;
+ }
+ if (newIndex < 0)
+ {
+ newIndex = 0;
+ }
+
+ if (oldIndex == newIndex)
+ return;
+
+ if( listSize == 0)
+ return;
+
+
+ getChildren().move(newIndex, oldIndex);
+ }
+
+} //TabFolderImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/WindowImpl.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/WindowImpl.java
new file mode 100644
index 00000000000..7b46c407092
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/impl/WindowImpl.java
@@ -0,0 +1,317 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.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.papyrus.sashwindows.di.AbstractPanel;
+import org.eclipse.papyrus.sashwindows.di.DiPackage;
+import org.eclipse.papyrus.sashwindows.di.Position;
+import org.eclipse.papyrus.sashwindows.di.Size;
+import org.eclipse.papyrus.sashwindows.di.Window;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Window</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.WindowImpl#getPanel <em>Panel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.WindowImpl#getPosition <em>Position</em>}</li>
+ * <li>{@link org.eclipse.papyrus.sashwindows.di.impl.WindowImpl#getSize <em>Size</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WindowImpl extends AbstractNodeImpl implements Window {
+ /**
+ * The cached value of the '{@link #getPanel() <em>Panel</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPanel()
+ * @generated
+ * @ordered
+ */
+ protected AbstractPanel panel;
+
+ /**
+ * The cached value of the '{@link #getPosition() <em>Position</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPosition()
+ * @generated
+ * @ordered
+ */
+ protected Position position;
+
+ /**
+ * The cached value of the '{@link #getSize() <em>Size</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSize()
+ * @generated
+ * @ordered
+ */
+ protected Size size;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WindowImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DiPackage.Literals.WINDOW;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractPanel getPanel() {
+ return panel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPanel(AbstractPanel newPanel, NotificationChain msgs) {
+ AbstractPanel oldPanel = panel;
+ panel = newPanel;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DiPackage.WINDOW__PANEL, oldPanel, newPanel);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPanel(AbstractPanel newPanel) {
+ if (newPanel != panel) {
+ NotificationChain msgs = null;
+ if (panel != null)
+ msgs = ((InternalEObject)panel).eInverseRemove(this, DiPackage.ABSTRACT_PANEL__WINDOW, AbstractPanel.class, msgs);
+ if (newPanel != null)
+ msgs = ((InternalEObject)newPanel).eInverseAdd(this, DiPackage.ABSTRACT_PANEL__WINDOW, AbstractPanel.class, msgs);
+ msgs = basicSetPanel(newPanel, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.WINDOW__PANEL, newPanel, newPanel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Position getPosition() {
+ if (position != null && position.eIsProxy()) {
+ InternalEObject oldPosition = (InternalEObject)position;
+ position = (Position)eResolveProxy(oldPosition);
+ if (position != oldPosition) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DiPackage.WINDOW__POSITION, oldPosition, position));
+ }
+ }
+ return position;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Position basicGetPosition() {
+ return position;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPosition(Position newPosition) {
+ Position oldPosition = position;
+ position = newPosition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.WINDOW__POSITION, oldPosition, position));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Size getSize() {
+ if (size != null && size.eIsProxy()) {
+ InternalEObject oldSize = (InternalEObject)size;
+ size = (Size)eResolveProxy(oldSize);
+ if (size != oldSize) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DiPackage.WINDOW__SIZE, oldSize, size));
+ }
+ }
+ return size;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Size basicGetSize() {
+ return size;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSize(Size newSize) {
+ Size oldSize = size;
+ size = newSize;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DiPackage.WINDOW__SIZE, oldSize, size));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.WINDOW__PANEL:
+ if (panel != null)
+ msgs = ((InternalEObject)panel).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DiPackage.WINDOW__PANEL, null, msgs);
+ return basicSetPanel((AbstractPanel)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DiPackage.WINDOW__PANEL:
+ return basicSetPanel(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 DiPackage.WINDOW__PANEL:
+ return getPanel();
+ case DiPackage.WINDOW__POSITION:
+ if (resolve) return getPosition();
+ return basicGetPosition();
+ case DiPackage.WINDOW__SIZE:
+ if (resolve) return getSize();
+ return basicGetSize();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DiPackage.WINDOW__PANEL:
+ setPanel((AbstractPanel)newValue);
+ return;
+ case DiPackage.WINDOW__POSITION:
+ setPosition((Position)newValue);
+ return;
+ case DiPackage.WINDOW__SIZE:
+ setSize((Size)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DiPackage.WINDOW__PANEL:
+ setPanel((AbstractPanel)null);
+ return;
+ case DiPackage.WINDOW__POSITION:
+ setPosition((Position)null);
+ return;
+ case DiPackage.WINDOW__SIZE:
+ setSize((Size)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DiPackage.WINDOW__PANEL:
+ return panel != null;
+ case DiPackage.WINDOW__POSITION:
+ return position != null;
+ case DiPackage.WINDOW__SIZE:
+ return size != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //WindowImpl
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiAdapterFactory.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiAdapterFactory.java
new file mode 100644
index 00000000000..1a5ef1c3b1f
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiAdapterFactory.java
@@ -0,0 +1,322 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.sashwindows.di.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage
+ * @generated
+ */
+public class DiAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DiPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = DiPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DiSwitch<Adapter> modelSwitch =
+ new DiSwitch<Adapter>() {
+ @Override
+ public Adapter caseSashModel(SashModel object) {
+ return createSashModelAdapter();
+ }
+ @Override
+ public Adapter caseWindow(Window object) {
+ return createWindowAdapter();
+ }
+ @Override
+ public Adapter caseAbstractNode(AbstractNode object) {
+ return createAbstractNodeAdapter();
+ }
+ @Override
+ public Adapter caseAbstractPanel(AbstractPanel object) {
+ return createAbstractPanelAdapter();
+ }
+ @Override
+ public Adapter casePosition(Position object) {
+ return createPositionAdapter();
+ }
+ @Override
+ public Adapter caseSize(Size object) {
+ return createSizeAdapter();
+ }
+ @Override
+ public Adapter caseTabFolder(TabFolder object) {
+ return createTabFolderAdapter();
+ }
+ @Override
+ public Adapter casePageRef(PageRef object) {
+ return createPageRefAdapter();
+ }
+ @Override
+ public Adapter caseSashPanel(SashPanel object) {
+ return createSashPanelAdapter();
+ }
+ @Override
+ public Adapter caseAbstractPage(AbstractPage object) {
+ return createAbstractPageAdapter();
+ }
+ @Override
+ public Adapter casePageList(PageList object) {
+ return createPageListAdapter();
+ }
+ @Override
+ public Adapter caseSashWindowsMngr(SashWindowsMngr object) {
+ return createSashWindowsMngrAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.SashModel <em>Sash Model</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.sashwindows.di.SashModel
+ * @generated
+ */
+ public Adapter createSashModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.Window <em>Window</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.sashwindows.di.Window
+ * @generated
+ */
+ public Adapter createWindowAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.AbstractNode <em>Abstract Node</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.sashwindows.di.AbstractNode
+ * @generated
+ */
+ public Adapter createAbstractNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.AbstractPanel <em>Abstract Panel</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.sashwindows.di.AbstractPanel
+ * @generated
+ */
+ public Adapter createAbstractPanelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.Position <em>Position</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.sashwindows.di.Position
+ * @generated
+ */
+ public Adapter createPositionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.Size <em>Size</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.sashwindows.di.Size
+ * @generated
+ */
+ public Adapter createSizeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.TabFolder <em>Tab Folder</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.sashwindows.di.TabFolder
+ * @generated
+ */
+ public Adapter createTabFolderAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.PageRef <em>Page Ref</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.sashwindows.di.PageRef
+ * @generated
+ */
+ public Adapter createPageRefAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.SashPanel <em>Sash Panel</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.sashwindows.di.SashPanel
+ * @generated
+ */
+ public Adapter createSashPanelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.AbstractPage <em>Abstract Page</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.sashwindows.di.AbstractPage
+ * @generated
+ */
+ public Adapter createAbstractPageAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.PageList <em>Page List</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.sashwindows.di.PageList
+ * @generated
+ */
+ public Adapter createPageListAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.sashwindows.di.SashWindowsMngr <em>Sash Windows Mngr</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.sashwindows.di.SashWindowsMngr
+ * @generated
+ */
+ public Adapter createSashWindowsMngrAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //DiAdapterFactory
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiSwitch.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiSwitch.java
new file mode 100644
index 00000000000..b5617cd5514
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiSwitch.java
@@ -0,0 +1,367 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.papyrus.sashwindows.di.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.sashwindows.di.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.sashwindows.di.DiPackage
+ * @generated
+ */
+public class DiSwitch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DiPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiSwitch() {
+ if (modelPackage == null) {
+ modelPackage = DiPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case DiPackage.SASH_MODEL: {
+ SashModel sashModel = (SashModel)theEObject;
+ T result = caseSashModel(sashModel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.WINDOW: {
+ Window window = (Window)theEObject;
+ T result = caseWindow(window);
+ if (result == null) result = caseAbstractNode(window);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.ABSTRACT_NODE: {
+ AbstractNode abstractNode = (AbstractNode)theEObject;
+ T result = caseAbstractNode(abstractNode);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.ABSTRACT_PANEL: {
+ AbstractPanel abstractPanel = (AbstractPanel)theEObject;
+ T result = caseAbstractPanel(abstractPanel);
+ if (result == null) result = caseAbstractNode(abstractPanel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.POSITION: {
+ Position position = (Position)theEObject;
+ T result = casePosition(position);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.SIZE: {
+ Size size = (Size)theEObject;
+ T result = caseSize(size);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.TAB_FOLDER: {
+ TabFolder tabFolder = (TabFolder)theEObject;
+ T result = caseTabFolder(tabFolder);
+ if (result == null) result = caseAbstractPanel(tabFolder);
+ if (result == null) result = caseAbstractNode(tabFolder);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.PAGE_REF: {
+ PageRef pageRef = (PageRef)theEObject;
+ T result = casePageRef(pageRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.SASH_PANEL: {
+ SashPanel sashPanel = (SashPanel)theEObject;
+ T result = caseSashPanel(sashPanel);
+ if (result == null) result = caseAbstractPanel(sashPanel);
+ if (result == null) result = caseAbstractNode(sashPanel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.ABSTRACT_PAGE: {
+ AbstractPage abstractPage = (AbstractPage)theEObject;
+ T result = caseAbstractPage(abstractPage);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.PAGE_LIST: {
+ PageList pageList = (PageList)theEObject;
+ T result = casePageList(pageList);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DiPackage.SASH_WINDOWS_MNGR: {
+ SashWindowsMngr sashWindowsMngr = (SashWindowsMngr)theEObject;
+ T result = caseSashWindowsMngr(sashWindowsMngr);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sash Model</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>Sash Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSashModel(SashModel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Window</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>Window</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWindow(Window object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractNode(AbstractNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Panel</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Panel</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractPanel(AbstractPanel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Position</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>Position</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePosition(Position object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Size</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>Size</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSize(Size object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Tab Folder</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>Tab Folder</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTabFolder(TabFolder object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Page Ref</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>Page Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePageRef(PageRef object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sash Panel</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>Sash Panel</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSashPanel(SashPanel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Page</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Page</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractPage(AbstractPage object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Page List</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>Page List</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePageList(PageList object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sash Windows Mngr</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>Sash Windows Mngr</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSashWindowsMngr(SashWindowsMngr object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //DiSwitch
diff --git a/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java
new file mode 100644
index 00000000000..eef1e87c67b
--- /dev/null
+++ b/plugins/core/org.eclipse.papyrus.sasheditor.di/src/org/eclipse/papyrus/sashwindows/di/util/DiUtils.java
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (c) 2009 CEA LIST & LIFL
+ *
+ *
+ * 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:
+ * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.sashwindows.di.util;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.sashwindows.di.DiFactory;
+import org.eclipse.papyrus.sashwindows.di.PageList;
+import org.eclipse.papyrus.sashwindows.di.SashModel;
+import org.eclipse.papyrus.sashwindows.di.SashWindowsMngr;
+import org.eclipse.papyrus.sashwindows.di.TabFolder;
+import org.eclipse.papyrus.sashwindows.di.Window;
+
+
+/**
+ * Set of utility methods
+ * @author dumoulin
+ */
+public class DiUtils {
+
+ /**
+ * Create a default SashModel with one window and one folder.
+ * Set the current folder.
+ * @param diResource
+ * @return
+ */
+ static public SashModel createDefaultSashModel() {
+
+ // SashModel
+ SashModel sashModel = DiFactory.eINSTANCE.createSashModel();
+ Window window = DiFactory.eINSTANCE.createWindow();
+ sashModel.getWindows().add(window);
+
+ TabFolder folder = DiFactory.eINSTANCE.createTabFolder();
+ window.setPanel(folder);
+ // Default folder
+ sashModel.setCurrentSelection(folder);
+
+ return sashModel;
+ }
+
+ /**
+ * Create a default SashWindowsMngr with one PageLit and one default SashModel.
+ * Set the current folder.
+ * @param diResource
+ * @return
+ */
+ static public SashWindowsMngr createDefaultSashWindowsMngr() {
+ SashWindowsMngr model;
+
+ model = DiFactory.eINSTANCE.createSashWindowsMngr();
+
+ // SashModel
+ SashModel layout = createDefaultSashModel();
+
+ model.setSashModel(layout);
+
+ // PageList
+ PageList pageList = DiFactory.eINSTANCE.createPageList();
+ model.setPageList(pageList);
+ return model;
+ }
+
+ /**
+ * Lookup for the SashModel object in the resource.
+ * @param diResource
+ * @return The {@link DiSashModel} or null if not found.
+ */
+ static public SashWindowsMngr lookupSashModel(Resource diResource) {
+
+ for( Object node : diResource.getContents() )
+ {
+ if( node instanceof SashWindowsMngr)
+ return (SashWindowsMngr)node;
+ }
+ return null;
+ }
+
+
+}

Back to the top