Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorptessier2014-04-28 12:08:29 +0000
committerptessier2014-04-28 12:08:29 +0000
commitdc8ae34255616e457bae77bebe870893eca2b3dd (patch)
tree786f375b3fbafaf3ab9752dd77059d515a8fc55f /plugins
parent0ba27ed35c57006de594ebf04536f867eec4123b (diff)
downloadorg.eclipse.papyrus-dc8ae34255616e457bae77bebe870893eca2b3dd.tar.gz
org.eclipse.papyrus-dc8ae34255616e457bae77bebe870893eca2b3dd.tar.xz
org.eclipse.papyrus-dc8ae34255616e457bae77bebe870893eca2b3dd.zip
433206: Papyrus shall enable local synchronization between graphical
element and element in the model https://bugs.eclipse.org/bugs/show_bug.cgi?id=433206 Change-Id: Ic46e73846be9a6c62906c773b9df718fd39af358
Diffstat (limited to 'plugins')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.classpath7
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.project28
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/META-INF/MANIFEST.MF25
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/about.html28
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/build.properties5
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/default.css59
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/docs/out.html1
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.pngbin0 -> 3270 bytes
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.pngbin0 -> 26832 bytes
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.pdoc12
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.properties12
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.xml15
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.di2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.notation467
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.uml230
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/schema/org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild.exsd131
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/Activator.java65
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/ISynchroSemanticChild.java37
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SemanticChild.java76
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SynchroSemanticChildRegistry.java155
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/editpolicy/SynchronizeViewEditPolicy.java236
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/provider/SynchronizeEditPolicyProvider.java80
23 files changed, 1678 insertions, 0 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.classpath b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.classpath
new file mode 100644
index 00000000000..8a8f1668cdc
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.project b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.project
new file mode 100644
index 00000000000..ab5465b36f0
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.uml.diagram.synchronizeview</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/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.settings/org.eclipse.jdt.core.prefs b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..f287d53cf45
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..339b0513392
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.uml.diagram.synchronizeview;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.uml.diagram.synchronizeview.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.common,
+ org.eclipse.emf.ecore,
+ org.eclipse.gef,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.papyrus.infra.gmfdiag.common,
+ org.eclipse.gmf.tooling.runtime,
+ org.eclipse.papyrus.infra.core.log
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.papyrus.infra.gmfdiag.common.commands
+Export-Package: org.eclipse.papyrus.uml.diagram.synchronizeview.customization
+Bundle-Description: The goal of this plugin is add the fucntionality to synchronize elements in diagram. More details (models and .html) has been store in the docs directory.
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/about.html b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/about.html
new file mode 100644
index 00000000000..82d49bf5f81
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/build.properties b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/build.properties
new file mode 100644
index 00000000000..6f20375d6c7
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/default.css b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/default.css
new file mode 100644
index 00000000000..a52509fd64b
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/default.css
@@ -0,0 +1,59 @@
+/*
+ * Style sheet for the CSS2 specification
+ */
+
+body {
+ padding: 2em 1em 2em 70px;
+ margin: 0;
+ font-family: sans-serif;
+ color: black;
+ background: white;
+ background-position: top left;
+ background-attachment: fixed;
+ background-repeat: no-repeat;
+}
+
+
+p {
+ margin-top: 0.6em;
+ margin-bottom: 0.6em;
+ margin-left: 2em;
+}
+
+h1, h2, h3, h4, h5, h6 { text-align: left }
+
+
+h1, h2, h3 { color: #005A9C; background: white }
+h1 { font: 170% sans-serif }
+h2 { font: 140% sans-serif }
+h3 { font: 120% sans-serif }
+h4 { font: bold 100% sans-serif }
+h5 { font: italic 100% sans-serif }
+h6 { font: small-caps 100% sans-serif }
+
+body{counter-reset: h1 h2 h3;}
+
+
+h2:before {
+ content: counter(h2) " ";
+ counter-increment: h2;
+}
+h3:before {
+ content: counter(h2) "." counter(h3) " ";
+ counter-increment: h3;
+}
+h1 {
+ counter-reset: h2;
+}
+h2 {
+ counter-reset: h3;
+}
+h1.unnumbered, h2.unnumbered {
+ counter-reset: none;
+}
+h1.unnumbered:before,
+h2.unnumbered:before,
+h3.unnumbered:before{
+ content: none;
+ counter-increment: none;
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/docs/out.html b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/docs/out.html
new file mode 100644
index 00000000000..73bdc51f3ed
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/docs/out.html
@@ -0,0 +1 @@
+<html><link rel="stylesheet" href="default.css" type="text/css"><H1>Synchronize automatically between graphical element and element in the model</H1><P>The goal is to enable a strong synchronization between visual elements displayed in the diagram with elements contained in the model. <BR/>This mechanism can be added locally for each element by using CSS. <BR/>For example, you would like to see: <BR/>- synchronize compartment of enumeration literal for all enumeration. <BR/>- synchronize compartment of attributes and operation for all class stereotyped …. <BR/>This fucntionality is associated to the task 433206. <BR/></P><H2>Requirements</H2><P>- LocalSynchronization (id=Req001): <BR/> The synchronization shall be local for each graphical element for example: package compartment, attribute compartment...</P><P>- CSSIntegration (id=Req002): <BR/> The synchronization shall be parameterized by CSS, by using a keyword and a value.</P><P>- CustomSynchronization (id=Req003): <BR/> For an graphical element, it shall be possible to custom the synchonization</P><H2>Use Cases</H2><img src=C:/Workspaces/head/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.png alt=UseCaseDiagram ><P align="middle">UseCaseDiagram</P><H3>Add an element in the model</H3><P>When an user adds an element in the model, the synchronization mechanism try to add in the current diagram the view that correspond to the semantic element <BR/>The difficulty of this mechanism is to parameter the synchronization. <BR/>By default, the synchronizatiopn is based on ' owned element'role. When you add an element, the graphical element that correponds to the owner try to display it in the diagram. <BR/>But some cases are not interesting. For example in the composite diagram, displaying parts in part correspond to part of the type, not directly part of part.</P><H3>Move an element</H3><P>When a element is moved, the synchronization mechanism must to create graphically the element to each diagram. <BR/></P><H3>Set synchronization enable</H3><P>The user can set enable the synchronization for a set of graphical elements. <BR/></P><H3>Remove an element from the model</H3><P>When the element is removed, the corresponding graphical element must be removed.</P><H2>Design</H2><img src=C:/Workspaces/head/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.png alt=ArchitectureOverview ><P align="middle">ArchitectureOverview</P></html> \ No newline at end of file
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.png b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.png
new file mode 100644
index 00000000000..3e73e6d2fae
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.png
Binary files differ
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.png b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.png
new file mode 100644
index 00000000000..5b7bc39fe19
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.png
Binary files differ
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.pdoc b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.pdoc
new file mode 100644
index 00000000000..d01137108d0
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.pdoc
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc:Documentation
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:doc="http://www.eclipse.org/papyrus/documentation/plugin/documentation"
+ description="The goal of this plugin is add the fucntionality to synchronize elements in diagram. &#xD;&#xA;More details (models and .html) has been store in the docs directory.&#xD;&#xA;">
+ <referent
+ firstName="Patrick"
+ lastName="Tessier"
+ eMail="patrick.tessier@cea.fr"
+ currentCompany="CEA LIST"/>
+</doc:Documentation>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.properties b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.properties
new file mode 100644
index 00000000000..cc6dfde8ed3
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2008 CEA LIST.
+# 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:
+# Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - initial API and implementation
+##################################################################################
+pluginName=org.eclipse.papyrus.uml.diagram.synchronizeview (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.xml
new file mode 100644
index 00000000000..c5ef33996b7
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild" name="org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild" schema="schema/org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild.exsd"/>
+<extension
+ point="org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders">
+ <editpolicyProvider
+ class="org.eclipse.papyrus.uml.diagram.synchronizeview.provider.SynchronizeEditPolicyProvider">
+ <Priority
+ name="Low">
+ </Priority>
+ </editpolicyProvider>
+</extension>
+
+</plugin>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.di b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.di
new file mode 100644
index 00000000000..8634d4c00e0
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.notation b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.notation
new file mode 100644
index 00000000000..c424f754592
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.notation
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:nattable="http://www.eclipse.org/papyrus/nattable/model" xmlns:nattableaxis="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis" xmlns:nattableaxisconfiguration="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration" xmlns:nattableaxisprovider="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider" xmlns:nattableconfiguration="http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/nattable/model/table/nattableaxis http://www.eclipse.org/papyrus/nattable/model#//nattableaxis http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableaxisconfiguration http://www.eclipse.org/papyrus/nattable/model/table/nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model#//nattableaxisprovider http://www.eclipse.org/papyrus/nattable/model/nattableconfiguration http://www.eclipse.org/papyrus/nattable/model#//nattableconfiguration">
+ <notation:Diagram xmi:id="_lNP40MbvEeO9CYUoXDRplw" type="PapyrusUMLClassDiagram" name="Overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_lNP40cbvEeO9CYUoXDRplw" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP40sbvEeO9CYUoXDRplw" type="5020"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP408bvEeO9CYUoXDRplw" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lNP41MbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP41cbvEeO9CYUoXDRplw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP41sbvEeO9CYUoXDRplw" x="201" y="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lNP418bvEeO9CYUoXDRplw" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP42MbvEeO9CYUoXDRplw" type="5020"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP42cbvEeO9CYUoXDRplw" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lNP42sbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP428bvEeO9CYUoXDRplw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP43MbvEeO9CYUoXDRplw" x="204" y="173" width="259" height="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lNP43cbvEeO9CYUoXDRplw" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP43sbvEeO9CYUoXDRplw" type="5020"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP438bvEeO9CYUoXDRplw" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lNP44MbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP44cbvEeO9CYUoXDRplw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnZsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP44sbvEeO9CYUoXDRplw" x="206" y="329"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lNP448bvEeO9CYUoXDRplw" type="2005">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP45MbvEeO9CYUoXDRplw" type="5020"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP45cbvEeO9CYUoXDRplw" type="7009">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lNP45sbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP458bvEeO9CYUoXDRplw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnaMbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lNP46MbvEeO9CYUoXDRplw" x="635" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gSwG8MofEeO3DsHezUU9Sg" type="2012">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gSxVEMofEeO3DsHezUU9Sg" type="5038"/>
+ <element xmi:type="uml:Comment" href="model.uml#_gP184MofEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gSwuAMofEeO3DsHezUU9Sg" x="534" y="72" width="366" height="70"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_lNP46cbvEeO9CYUoXDRplw"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_lNP46sbvEeO9CYUoXDRplw">
+ <owner xmi:type="uml:Model" href="model.uml#_lNLnYMbvEeO9CYUoXDRplw"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.infra.viewpoints.policy/builtin/default.configuration#//@viewpoints.0/@modelKinds.1"/>
+ </styles>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYMbvEeO9CYUoXDRplw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_lNP468bvEeO9CYUoXDRplw" type="4006" source="_lNP418bvEeO9CYUoXDRplw" target="_lNP40cbvEeO9CYUoXDRplw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP47MbvEeO9CYUoXDRplw" visible="false" type="6014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP47cbvEeO9CYUoXDRplw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP47sbvEeO9CYUoXDRplw" visible="false" type="6015">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP478bvEeO9CYUoXDRplw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lNP48MbvEeO9CYUoXDRplw"/>
+ <element xmi:type="uml:Abstraction" href="model.uml#_lNLnZMbvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lNP48cbvEeO9CYUoXDRplw" points="[-2, -10, 8, 48]$[-27, -45, -17, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP48sbvEeO9CYUoXDRplw" id="(0.305,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP488bvEeO9CYUoXDRplw" id="(0.27,0.87)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lNP49MbvEeO9CYUoXDRplw" type="4006" source="_lNP43cbvEeO9CYUoXDRplw" target="_lNP418bvEeO9CYUoXDRplw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP49cbvEeO9CYUoXDRplw" visible="false" type="6014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP49sbvEeO9CYUoXDRplw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP498bvEeO9CYUoXDRplw" visible="false" type="6015">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP4-MbvEeO9CYUoXDRplw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lNP4-cbvEeO9CYUoXDRplw"/>
+ <element xmi:type="uml:Abstraction" href="model.uml#_lNLnZ8bvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lNP4-sbvEeO9CYUoXDRplw" points="[-9, -16, 0, 67]$[-24, -72, -15, 11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP4-8bvEeO9CYUoXDRplw" id="(0.27,0.16)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP4_MbvEeO9CYUoXDRplw" id="(0.235,0.89)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lNP4_cbvEeO9CYUoXDRplw" type="4008" source="_lNP448bvEeO9CYUoXDRplw" target="_lNP418bvEeO9CYUoXDRplw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP4_sbvEeO9CYUoXDRplw" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP4_8bvEeO9CYUoXDRplw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP5AMbvEeO9CYUoXDRplw" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP5AcbvEeO9CYUoXDRplw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lNP5AsbvEeO9CYUoXDRplw"/>
+ <element xmi:type="uml:Dependency" href="model.uml#_lNLnacbvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lNP5A8bvEeO9CYUoXDRplw" points="[-46, -20, 265, 113]$[-275, -135, 36, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP5BMbvEeO9CYUoXDRplw" id="(0.0,0.24)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP5BcbvEeO9CYUoXDRplw" id="(1.0,0.65)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lNP5BsbvEeO9CYUoXDRplw" type="4008" source="_lNP448bvEeO9CYUoXDRplw" target="_lNP43cbvEeO9CYUoXDRplw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP5B8bvEeO9CYUoXDRplw" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP5CMbvEeO9CYUoXDRplw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lNP5CcbvEeO9CYUoXDRplw" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lNP5CsbvEeO9CYUoXDRplw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lNP5C8bvEeO9CYUoXDRplw"/>
+ <element xmi:type="uml:Dependency" href="model.uml#_lNLnasbvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lNP5DMbvEeO9CYUoXDRplw" points="[-40, 1, 262, -12]$[-267, 20, 35, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP5DcbvEeO9CYUoXDRplw" id="(0.0,0.69)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lNP5DsbvEeO9CYUoXDRplw" id="(1.0,0.64)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_KohZ8McQEeOLeMHQ13vmOA" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KohZ8ccQEeOLeMHQ13vmOA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KohZ8scQEeOLeMHQ13vmOA">
+ <owner xmi:type="uml:Model" href="model.uml#_lNLnYMbvEeO9CYUoXDRplw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYMbvEeO9CYUoXDRplw"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Nf1kUMcbEeOenbI5XqwJvQ" type="UseCase" name="UseCaseDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_OAXegMcbEeOenbI5XqwJvQ" type="2015">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OAZTsMcbEeOenbI5XqwJvQ" type="5019"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OAZTsccbEeOenbI5XqwJvQ" type="7011">
+ <children xmi:type="notation:Shape" xmi:id="_PBuN0McbEeOenbI5XqwJvQ" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PBuN0scbEeOenbI5XqwJvQ" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PBu04McbEeOenbI5XqwJvQ" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PBu04ccbEeOenbI5XqwJvQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PBu04scbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PBu048cbEeOenbI5XqwJvQ"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_O8koEMcbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PBuN0ccbEeOenbI5XqwJvQ" x="23" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QqrvsMcbEeOenbI5XqwJvQ" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QqsWwMcbEeOenbI5XqwJvQ" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QqsWwccbEeOenbI5XqwJvQ" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QqsWwscbEeOenbI5XqwJvQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QqsWw8cbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QqsWxMcbEeOenbI5XqwJvQ"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_QqgwkMcbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QqrvsccbEeOenbI5XqwJvQ" x="12" y="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zqrN0MozEeO3DsHezUU9Sg" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zqr04MozEeO3DsHezUU9Sg" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zqr04cozEeO3DsHezUU9Sg" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zqr04sozEeO3DsHezUU9Sg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zqr048ozEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zqr05MozEeO3DsHezUU9Sg"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_zqMFoMozEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zqrN0cozEeO3DsHezUU9Sg" x="64" y="149" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l8-K4Mo3EeOzTpunJ7qmNw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l8-x8Mo3EeOzTpunJ7qmNw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l8_ZAMo3EeOzTpunJ7qmNw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l8_ZAco3EeOzTpunJ7qmNw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l8_ZAso3EeOzTpunJ7qmNw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8_ZA8o3EeOzTpunJ7qmNw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_l5cVwMo3EeOzTpunJ7qmNw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8-K4co3EeOzTpunJ7qmNw" x="42" y="206"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OAZTsscbEeOenbI5XqwJvQ"/>
+ </children>
+ <element xmi:type="uml:Component" href="model.uml#_lNLnZcbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OAXegccbEeOenbI5XqwJvQ" x="311" y="22" width="361" height="316"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_g3FzAMozEeO3DsHezUU9Sg" type="2011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3GaEMozEeO3DsHezUU9Sg" type="5014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3GaEcozEeO3DsHezUU9Sg" x="20" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3HBIMozEeO3DsHezUU9Sg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3HBIcozEeO3DsHezUU9Sg" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g3HoMMozEeO3DsHezUU9Sg" type="6037">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_g3HoMcozEeO3DsHezUU9Sg" x="20" y="80"/>
+ </children>
+ <element xmi:type="uml:Actor" href="model.uml#_g2Kl8MozEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g3FzAcozEeO3DsHezUU9Sg" x="136" y="106"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VTWqAMr3EeOxaZrLLxAqiw" type="2016">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VTXREMr3EeOxaZrLLxAqiw" type="5025"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VTXREcr3EeOxaZrLLxAqiw" type="7013">
+ <children xmi:type="notation:Shape" xmi:id="_Vc4ZcMr3EeOxaZrLLxAqiw" type="3014">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vc4Zc8r3EeOxaZrLLxAqiw" type="5024"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vc4ZdMr3EeOxaZrLLxAqiw" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vc4Zdcr3EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Vc4Zccr3EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vc4Zcsr3EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NFuEwMr4EeOxaZrLLxAqiw" type="3013">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFuExcr4EeOxaZrLLxAqiw" type="5023"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFuExsr4EeOxaZrLLxAqiw" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_NF3OsMr4EeOxaZrLLxAqiw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF3Ossr4EeOxaZrLLxAqiw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF3Os8r4EeOxaZrLLxAqiw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NF3OtMr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NF3Otcr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF3Otsr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_O8koEMcbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF3Oscr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NF31wMr4EeOxaZrLLxAqiw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF31wsr4EeOxaZrLLxAqiw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF31w8r4EeOxaZrLLxAqiw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NF31xMr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NF31xcr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF31xsr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_zqMFoMozEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF31wcr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NF31x8r4EeOxaZrLLxAqiw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF31ycr4EeOxaZrLLxAqiw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF31ysr4EeOxaZrLLxAqiw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NF31y8r4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NF31zMr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF31zcr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_l5cVwMo3EeOzTpunJ7qmNw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF31yMr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NF4c0Mr4EeOxaZrLLxAqiw" type="3009">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF4c0sr4EeOxaZrLLxAqiw" type="5018"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NF4c08r4EeOxaZrLLxAqiw" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NF4c1Mr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NF4c1cr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF4c1sr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:UseCase" href="model.uml#_QqgwkMcbEeOenbI5XqwJvQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF4c0cr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFuEx8r4EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_NFuEwcr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NFuEwsr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_NFuEw8r4EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Component" href="model.uml#_lNLnZcbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFuExMr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NFur0Mr4EeOxaZrLLxAqiw" type="3011">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFur0sr4EeOxaZrLLxAqiw" type="5021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NFur08r4EeOxaZrLLxAqiw" x="20" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFur1Mr4EeOxaZrLLxAqiw" type="6028">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NFur1cr4EeOxaZrLLxAqiw" x="20" y="100"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFur1sr4EeOxaZrLLxAqiw" type="6040">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NFur18r4EeOxaZrLLxAqiw" x="20" y="80"/>
+ </children>
+ <element xmi:type="uml:Actor" href="model.uml#_g2Kl8MozEeO3DsHezUU9Sg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFur0cr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VTXREsr3EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_VTWqAcr3EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VTWqAsr3EeOxaZrLLxAqiw" x="-1" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VTXRE8r3EeOxaZrLLxAqiw" type="2016">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VTXRFsr3EeOxaZrLLxAqiw" type="5025"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VTXRF8r3EeOxaZrLLxAqiw" type="7013">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VTXRGMr3EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_VTXRFMr3EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VTXRFcr3EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Nf2LYMcbEeOenbI5XqwJvQ"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_Nf2LYccbEeOenbI5XqwJvQ">
+ <owner xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_1p5TkMozEeO3DsHezUU9Sg" type="4011" source="_g3FzAMozEeO3DsHezUU9Sg" target="_PBuN0McbEeOenbI5XqwJvQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1p56oMozEeO3DsHezUU9Sg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1p56ocozEeO3DsHezUU9Sg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1p6hsMozEeO3DsHezUU9Sg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1p6hscozEeO3DsHezUU9Sg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1p5TkcozEeO3DsHezUU9Sg"/>
+ <element xmi:type="uml:Association" href="model.uml#_1pkjcMozEeO3DsHezUU9Sg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1p5TksozEeO3DsHezUU9Sg" points="[40, -7, -141, 0]$[165, -7, -16, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1qHWAMozEeO3DsHezUU9Sg" id="(0.06584362139917696,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2Py18MozEeO3DsHezUU9Sg" type="4011" source="_g3FzAMozEeO3DsHezUU9Sg" target="_QqrvsMcbEeOenbI5XqwJvQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2PzdAMozEeO3DsHezUU9Sg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2PzdAcozEeO3DsHezUU9Sg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2P0EEMozEeO3DsHezUU9Sg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2P0EEcozEeO3DsHezUU9Sg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_2Py18cozEeO3DsHezUU9Sg"/>
+ <element xmi:type="uml:Association" href="model.uml#_2PwZsMozEeO3DsHezUU9Sg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2Py18sozEeO3DsHezUU9Sg" points="[40, 23, -164, -62]$[103, 61, -101, -24]$[166, 76, -38, -9]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2P7_4MozEeO3DsHezUU9Sg" id="(0.12837837837837837,0.7)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2zKBsMozEeO3DsHezUU9Sg" type="4011" source="_g3FzAMozEeO3DsHezUU9Sg" target="_zqrN0MozEeO3DsHezUU9Sg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2zKowMozEeO3DsHezUU9Sg" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2zLP0MozEeO3DsHezUU9Sg" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2zLP0cozEeO3DsHezUU9Sg" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2zL24MozEeO3DsHezUU9Sg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_2zKBscozEeO3DsHezUU9Sg"/>
+ <element xmi:type="uml:Association" href="model.uml#_2zHlcMozEeO3DsHezUU9Sg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2zKBssozEeO3DsHezUU9Sg" points="[24, 30, -258, -110]$[82, 102, -200, -38]$[216, 127, -66, -13]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rvotEMo3EeOzTpunJ7qmNw" type="4011" source="_g3FzAMozEeO3DsHezUU9Sg" target="_l8-K4Mo3EeOzTpunJ7qmNw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rvpUIMo3EeOzTpunJ7qmNw" visible="false" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rvpUIco3EeOzTpunJ7qmNw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rvp7MMo3EeOzTpunJ7qmNw" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rvp7Mco3EeOzTpunJ7qmNw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rvotEco3EeOzTpunJ7qmNw"/>
+ <element xmi:type="uml:Association" href="model.uml#_rvVLEMo3EeOzTpunJ7qmNw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rvotEso3EeOzTpunJ7qmNw" points="[10, 30, -218, -199]$[54, 160, -174, -69]$[197, 216, -31, -13]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rvx3AMo3EeOzTpunJ7qmNw" id="(0.13777777777777778,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NFdmEMr4EeOxaZrLLxAqiw" type="4015" source="_VTWqAMr3EeOxaZrLLxAqiw" target="_Vc4ZcMr3EeOxaZrLLxAqiw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFdmE8r4EeOxaZrLLxAqiw" type="6011">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NFdmFMr4EeOxaZrLLxAqiw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NFdmFcr4EeOxaZrLLxAqiw" type="6014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NFdmFsr4EeOxaZrLLxAqiw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NFdmEcr4EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Abstraction" href="model.uml#_lNLnZMbvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NFdmEsr4EeOxaZrLLxAqiw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+ <nattable:Table xmi:id="_1PpFsMohEeO3DsHezUU9Sg" name="RequirementTable" currentRowAxisProvider="_1PpFtcohEeO3DsHezUU9Sg" currentColumnAxisProvider="_1PpFscohEeO3DsHezUU9Sg">
+ <context xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <owner xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <prototype xmi:type="configuration:PapyrusSyncTable" href="platform:/plugin/org.eclipse.papyrus.infra.viewpoints.policy/builtin/default.configuration#//@viewpoints.0/@modelKinds.26"/>
+ <tableConfiguration xmi:type="nattableconfiguration:TableConfiguration" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#/"/>
+ <columnAxisProvidersHistory xmi:type="nattableaxisprovider:SlaveObjectAxisProvider" xmi:id="_1PpFscohEeO3DsHezUU9Sg" description="Provides the columns of the tables with a default configuration" name="Requirements Feature Columns Provider">
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_1PpFssohEeO3DsHezUU9Sg" element="property_of_stereotype:/SysML::Requirements::Requirement::id">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ <axis xmi:type="nattableaxis:EStructuralFeatureAxis" xmi:id="_1PpFs8ohEeO3DsHezUU9Sg">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.0"/>
+ <element xmi:type="ecore:EAttribute" href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement/name"/>
+ </axis>
+ <axis xmi:type="nattableaxis:FeatureIdAxis" xmi:id="_1PpFtMohEeO3DsHezUU9Sg" element="property_of_stereotype:/SysML::Requirements::Requirement::text">
+ <manager xmi:type="nattableaxisconfiguration:AxisManagerRepresentation" href="platform:/plugin/org.eclipse.papyrus.sysml.nattable.requirement.config/configs/requirement.nattableconfiguration#//@columnHeaderAxisConfiguration/@axisManagers.1"/>
+ </axis>
+ </columnAxisProvidersHistory>
+ <rowAxisProvidersHistory xmi:type="nattableaxisprovider:MasterObjectAxisProvider" xmi:id="_1PpFtcohEeO3DsHezUU9Sg" description="Provides the requirements directly owned by the context of the table" name="Requirement Axis Provider" disconnectSlave="true"/>
+ </nattable:Table>
+ <notation:Diagram xmi:id="_pUh7UMrhEeOada-BlHQh_Q" type="PapyrusUMLComponentDiagram" name="ArchitectureOverview" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_p_2JMMrhEeOada-BlHQh_Q" type="2002">
+ <children xmi:type="notation:DecorationNode" xmi:id="_p_2wQMrhEeOada-BlHQh_Q" type="5004"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_p_3XUMrhEeOada-BlHQh_Q" type="7001">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_p_3XUcrhEeOada-BlHQh_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p_3XUsrhEeOada-BlHQh_Q"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_p_2JMcrhEeOada-BlHQh_Q"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_p_2JMsrhEeOada-BlHQh_Q"/>
+ <element xmi:type="uml:Component" href="model.uml#_p8iWgMrhEeOada-BlHQh_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p_2JM8rhEeOada-BlHQh_Q" x="339" y="129" width="312" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VVCFAMr3EeOxaZrLLxAqiw" type="3202">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VVCFAsr3EeOxaZrLLxAqiw" type="5262"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VVCFA8r3EeOxaZrLLxAqiw" type="7006">
+ <children xmi:type="notation:Shape" xmi:id="_NJETsMr4EeOxaZrLLxAqiw" type="3074">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJETssr4EeOxaZrLLxAqiw" type="5258"/>
+ <element xmi:type="uml:Comment" href="model.uml#_X4kYwMr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJETscr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_NJETs8r4EeOxaZrLLxAqiw" type="3071">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJETt8r4EeOxaZrLLxAqiw" type="5257"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NJETuMr4EeOxaZrLLxAqiw" type="7004">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NJETucr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJETusr4EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_NJETtMr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NJETtcr4EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Component" href="model.uml#_p8iWgMrhEeOada-BlHQh_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJETtsr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VVCFBMr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVCFBcr3EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnZsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVCFAcr3EeOxaZrLLxAqiw" x="-1" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VVCsEMr3EeOxaZrLLxAqiw" type="3202">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VVCsEsr3EeOxaZrLLxAqiw" type="5262"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VVCsE8r3EeOxaZrLLxAqiw" type="7006">
+ <children xmi:type="notation:Shape" xmi:id="_NJhmsMr4EeOxaZrLLxAqiw" type="3077">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJhmssr4EeOxaZrLLxAqiw" type="5264"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJhms8r4EeOxaZrLLxAqiw" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NJhmtMr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJhmtcr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJhmscr4EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VVCsFMr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVCsFcr3EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VVCsEcr3EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X4uw0Mr3EeOxaZrLLxAqiw" type="3201">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X4uw0sr3EeOxaZrLLxAqiw" type="5255"/>
+ <element xmi:type="uml:Comment" href="model.uml#_X4kYwMr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X4uw0cr3EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X4vX4Mr3EeOxaZrLLxAqiw" type="3202">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X4vX4sr3EeOxaZrLLxAqiw" type="5262"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X4vX48r3EeOxaZrLLxAqiw" type="7006">
+ <children xmi:type="notation:Shape" xmi:id="_NJmfMMr4EeOxaZrLLxAqiw" type="3074">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJnGQMr4EeOxaZrLLxAqiw" type="5258"/>
+ <element xmi:type="uml:Comment" href="model.uml#_X4kYwMr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJmfMcr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_NJnGQcr4EeOxaZrLLxAqiw" type="3071">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NJnGRcr4EeOxaZrLLxAqiw" type="5257"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NJnGRsr4EeOxaZrLLxAqiw" type="7004">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NJnGR8r4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJnGSMr4EeOxaZrLLxAqiw"/>
+ </children>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_NJnGQsr4EeOxaZrLLxAqiw"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NJnGQ8r4EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Component" href="model.uml#_p8iWgMrhEeOada-BlHQh_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NJnGRMr4EeOxaZrLLxAqiw" x="-1" y="-1"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_X4vX5Mr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X4vX5cr3EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnZsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X4vX4cr3EeOxaZrLLxAqiw" x="-1" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X4vX5sr3EeOxaZrLLxAqiw" type="3202">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X4vX6Mr3EeOxaZrLLxAqiw" type="5262"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X4v-8Mr3EeOxaZrLLxAqiw" type="7006">
+ <children xmi:type="notation:Shape" xmi:id="_NKIDoMr4EeOxaZrLLxAqiw" type="3077">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NKIDosr4EeOxaZrLLxAqiw" type="5264"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NKIDo8r4EeOxaZrLLxAqiw" type="7007">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NKIDpMr4EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NKIDpcr4EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnYsbvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NKIDocr4EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_X4v-8cr3EeOxaZrLLxAqiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X4v-8sr3EeOxaZrLLxAqiw"/>
+ </children>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnY8bvEeO9CYUoXDRplw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X4vX58r3EeOxaZrLLxAqiw" x="-1" y="-101"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_pUh7UcrhEeOada-BlHQh_Q"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_pUh7UsrhEeOada-BlHQh_Q">
+ <owner xmi:type="uml:Model" href="model.uml#_lNLnZsbvEeO9CYUoXDRplw"/>
+ </styles>
+ <element xmi:type="uml:Model" href="model.uml#_lNLnZsbvEeO9CYUoXDRplw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NI8X4Mr4EeOxaZrLLxAqiw" type="4013" source="_X4vX4Mr3EeOxaZrLLxAqiw" target="_X4vX5sr3EeOxaZrLLxAqiw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NI8X48r4EeOxaZrLLxAqiw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NI8X5Mr4EeOxaZrLLxAqiw" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NI8-8Mr4EeOxaZrLLxAqiw" type="6021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_NI8-8cr4EeOxaZrLLxAqiw" y="30"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NI8X4cr4EeOxaZrLLxAqiw"/>
+ <element xmi:type="uml:Abstraction" href="model.uml#_lNLnZ8bvEeO9CYUoXDRplw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NI8X4sr4EeOxaZrLLxAqiw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.uml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.uml
new file mode 100644
index 00000000000..c5d523505a1
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/resource/model.uml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Document="http:///schemas/Document/_qR4REMn0EeO9CYUoXDRplw/0" xmlns:Requirements="http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:structure="http://DeveloperProcess/schemas/structure/_VA9p4McPEeO9CYUoXDRplw/1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/Document/_qR4REMn0EeO9CYUoXDRplw/0 pathmap://DEVELOPER_PROFILES/Document.profile.uml#_qR44IMn0EeO9CYUoXDRplw http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements http://DeveloperProcess/schemas/structure/_VA9p4McPEeO9CYUoXDRplw/1 pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_VA-4AMcPEeO9CYUoXDRplw">
+ <uml:Model xmi:id="_lNLnYMbvEeO9CYUoXDRplw" name="SynchronizeView">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_gP184MofEeO3DsHezUU9Sg">
+ <body>The goal is to enable a strong synchronization between visual elements displayed in the diagram with elements contained in the model. &#xD;
+This mechanism can be added locally for each element by using CSS. &#xD;
+For example, you would like to see: &#xD;
+- synchronize compartment of enumeration literal for all enumeration. &#xD;
+- synchronize compartment of attributes and operation for all class stereotyped ….&#xD;
+This fucntionality is associated to the task 433206.&#xD;
+</body>
+ </ownedComment>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_lNLnYcbvEeO9CYUoXDRplw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Model" xmi:id="_lNLnYsbvEeO9CYUoXDRplw" name="Requirements">
+ <packagedElement xmi:type="uml:Class" xmi:id="_W7DF0MohEeO3DsHezUU9Sg" name="LocalSynchronization"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9DAe4MoiEeO3DsHezUU9Sg" name="CSSIntegration"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WWPdsMojEeO3DsHezUU9Sg" name="CustomSynchronization"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_lNLnY8bvEeO9CYUoXDRplw" name="UseCases">
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_lNLnZMbvEeO9CYUoXDRplw" name="useCasesAbstraction" client="_lNLnY8bvEeO9CYUoXDRplw" supplier="_lNLnYsbvEeO9CYUoXDRplw"/>
+ <packagedElement xmi:type="uml:Component" xmi:id="_lNLnZcbvEeO9CYUoXDRplw" name="Synchronization" useCase="_O8koEMcbEeOenbI5XqwJvQ _zqMFoMozEeO3DsHezUU9Sg _l5cVwMo3EeOzTpunJ7qmNw">
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_O8koEMcbEeOenbI5XqwJvQ" name="Add an element in the model" subject="_lNLnZcbvEeO9CYUoXDRplw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_XBXZIMo1EeO3DsHezUU9Sg">
+ <body>When an user adds an element in the model, the synchronization mechanism try to add in the current diagram the view that correspond to the semantic element&#xD;
+The difficulty of this mechanism is to parameter the synchronization.&#xD;
+By default, the synchronizatiopn is based on ' owned element'role. When you add an element, the graphical element that correponds to the owner try to display it in the diagram. &#xD;
+But some cases are not interesting. For example in the composite diagram, displaying parts in part correspond to part of the type, not directly part of part.</body>
+ </ownedComment>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_zqMFoMozEeO3DsHezUU9Sg" name="Move an element" subject="_lNLnZcbvEeO9CYUoXDRplw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_a-G7gMo1EeO3DsHezUU9Sg">
+ <body>When a element is moved, the synchronization mechanism must to create graphically the element to each diagram.&#xD;
+</body>
+ </ownedComment>
+ </ownedUseCase>
+ <ownedUseCase xmi:type="uml:UseCase" xmi:id="_l5cVwMo3EeOzTpunJ7qmNw" name="Set synchronization enable" subject="_lNLnZcbvEeO9CYUoXDRplw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_vxFwUMo3EeOzTpunJ7qmNw">
+ <body>The user can set enable the synchronization for a set of graphical elements.&#xD;
+</body>
+ </ownedComment>
+ </ownedUseCase>
+ <packagedElement xmi:type="uml:UseCase" xmi:id="_QqgwkMcbEeOenbI5XqwJvQ" name="Remove an element from the model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_bGhQoMo1EeO3DsHezUU9Sg">
+ <body>When the element is removed, the corresponding graphical element must be removed.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Actor" xmi:id="_g2Kl8MozEeO3DsHezUU9Sg" name="User"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_1pkjcMozEeO3DsHezUU9Sg" name="A_user_add an element in the model" memberEnd="_1pkjccozEeO3DsHezUU9Sg _1pkjdMozEeO3DsHezUU9Sg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_1pkjccozEeO3DsHezUU9Sg" name="user" type="_g2Kl8MozEeO3DsHezUU9Sg" association="_1pkjcMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1pkjcsozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1pkjc8ozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_1pkjdMozEeO3DsHezUU9Sg" name="add an element in the model" type="_O8koEMcbEeOenbI5XqwJvQ" association="_1pkjcMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1pkjdcozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1pkjdsozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_2PwZsMozEeO3DsHezUU9Sg" name="A_user_remove an element from the model" memberEnd="_2PwZscozEeO3DsHezUU9Sg _2PwZtMozEeO3DsHezUU9Sg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_2PwZscozEeO3DsHezUU9Sg" name="user" type="_g2Kl8MozEeO3DsHezUU9Sg" association="_2PwZsMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2PwZssozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2PwZs8ozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_2PwZtMozEeO3DsHezUU9Sg" name="remove an element from the model" type="_QqgwkMcbEeOenbI5XqwJvQ" association="_2PwZsMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2PwZtcozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2PwZtsozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_2zHlcMozEeO3DsHezUU9Sg" name="A_user_move an element" memberEnd="_2zHlccozEeO3DsHezUU9Sg _2zHldMozEeO3DsHezUU9Sg">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_2zHlccozEeO3DsHezUU9Sg" name="user" type="_g2Kl8MozEeO3DsHezUU9Sg" association="_2zHlcMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2zHlcsozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2zHlc8ozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_2zHldMozEeO3DsHezUU9Sg" name="move an element" type="_zqMFoMozEeO3DsHezUU9Sg" association="_2zHlcMozEeO3DsHezUU9Sg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2zHldcozEeO3DsHezUU9Sg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2zHldsozEeO3DsHezUU9Sg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_rvVLEMo3EeOzTpunJ7qmNw" name="A_user_set synchronization enable" memberEnd="_rvVLEco3EeOzTpunJ7qmNw _rvVLFMo3EeOzTpunJ7qmNw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_rvVLEco3EeOzTpunJ7qmNw" name="user" type="_g2Kl8MozEeO3DsHezUU9Sg" association="_rvVLEMo3EeOzTpunJ7qmNw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvVLEso3EeOzTpunJ7qmNw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvVLE8o3EeOzTpunJ7qmNw" value="1"/>
+ </ownedEnd>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_rvVLFMo3EeOzTpunJ7qmNw" name="set synchronization enable" type="_l5cVwMo3EeOzTpunJ7qmNw" association="_rvVLEMo3EeOzTpunJ7qmNw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvVLFco3EeOzTpunJ7qmNw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvVLFso3EeOzTpunJ7qmNw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_lNLnZsbvEeO9CYUoXDRplw" name="Design">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_X4kYwMr3EeOxaZrLLxAqiw">
+ <body>In order to install synchronization on element, views must have canonical style. So a migration is needed.&#xD;
+BasicCompartment becomes Compartment&#xD;
+Diagram and Shape mst have a style: so we need to add :&#xD;
+ CanonicalStyle canonicalStyle=(CanonicalStyle)diagram.createStyle(NotationPackage.eINSTANCE.getCanonicalStyle());&#xD;
+ canonicalStyle.setCanonical(false);</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_lNLnZ8bvEeO9CYUoXDRplw" name="DesignAbstraction" client="_lNLnZsbvEeO9CYUoXDRplw" supplier="_lNLnY8bvEeO9CYUoXDRplw"/>
+ <packagedElement xmi:type="uml:Component" xmi:id="_p8iWgMrhEeOada-BlHQh_Q" name="org.eclipse.papyrus.uml.diagram.synchronizeview"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_lNLnaMbvEeO9CYUoXDRplw" name="Test">
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_lNLnacbvEeO9CYUoXDRplw" name="Dependency1" client="_lNLnaMbvEeO9CYUoXDRplw" supplier="_lNLnY8bvEeO9CYUoXDRplw"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_lNLnasbvEeO9CYUoXDRplw" name="Dependency2" client="_lNLnaMbvEeO9CYUoXDRplw" supplier="_lNLnZsbvEeO9CYUoXDRplw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Model" xmi:id="_C5Nq8MrsEeOxaZrLLxAqiw" name="Synchronize automatically between graphical element and element in the model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C5QuQMrsEeOxaZrLLxAqiw">
+ <body>The goal is to enable a strong synchronization between visual elements displayed in the diagram with elements contained in the model. &#xD;
+This mechanism can be added locally for each element by using CSS. &#xD;
+For example, you would like to see: &#xD;
+- synchronize compartment of enumeration literal for all enumeration. &#xD;
+- synchronize compartment of attributes and operation for all class stereotyped ….&#xD;
+This fucntionality is associated to the task 433206.&#xD;
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C5TKgMrsEeOxaZrLLxAqiw" name="Requirements">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C5Xb8MrsEeOxaZrLLxAqiw">
+ <body>- LocalSynchronization (id=Req001):
+ The synchronization shall be local for each graphical element for example: package compartment, attribute compartment...</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C5bGUMrsEeOxaZrLLxAqiw">
+ <body>- CSSIntegration (id=Req002):
+ The synchronization shall be parameterized by CSS, by using a keyword and a value.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C5ewsMrsEeOxaZrLLxAqiw">
+ <body>- CustomSynchronization (id=Req003):
+ For an graphical element, it shall be possible to custom the synchonization</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C5hM8MrsEeOxaZrLLxAqiw" name="Use Cases">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C64e4MrsEeOxaZrLLxAqiw">
+ <body>UseCaseDiagram</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C66UEMrsEeOxaZrLLxAqiw" name="Add an element in the model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C68JQMrsEeOxaZrLLxAqiw">
+ <body>When an user adds an element in the model, the synchronization mechanism try to add in the current diagram the view that correspond to the semantic element&#xD;
+The difficulty of this mechanism is to parameter the synchronization.&#xD;
+By default, the synchronizatiopn is based on ' owned element'role. When you add an element, the graphical element that correponds to the owner try to display it in the diagram. &#xD;
+But some cases are not interesting. For example in the composite diagram, displaying parts in part correspond to part of the type, not directly part of part.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C69-cMrsEeOxaZrLLxAqiw" name="Move an element">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C6_zoMrsEeOxaZrLLxAqiw">
+ <body>When a element is moved, the synchronization mechanism must to create graphically the element to each diagram.&#xD;
+</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C7Bo0MrsEeOxaZrLLxAqiw" name="Set synchronization enable">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C7C28MrsEeOxaZrLLxAqiw">
+ <body>The user can set enable the synchronization for a set of graphical elements.&#xD;
+</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C7EsIMrsEeOxaZrLLxAqiw" name="Remove an element from the model">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C7GhUMrsEeOxaZrLLxAqiw">
+ <body>When the element is removed, the corresponding graphical element must be removed.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_C7IWgMrsEeOxaZrLLxAqiw" name="Design">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_C7aqYMrsEeOxaZrLLxAqiw">
+ <body>ArchitectureOverview</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_lNLna8bvEeO9CYUoXDRplw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lNLnbMbvEeO9CYUoXDRplw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_VA6mkMcPEeO9CYUoXDRplw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_kWqjAMbXEeO09JBvNFZRNw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_lNLnbcbvEeO9CYUoXDRplw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lNLnbsbvEeO9CYUoXDRplw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_VA-4AMcPEeO9CYUoXDRplw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_qCT3MMbXEeO09JBvNFZRNw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_lNLnb8bvEeO9CYUoXDRplw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lNLncMbvEeO9CYUoXDRplw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_VBAtMccPEeO9CYUoXDRplw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_2LNtQMbYEeO09JBvNFZRNw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_zqiBwMbvEeO9CYUoXDRplw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zq7DUMbvEeO9CYUoXDRplw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_FGuXIMn2EeOU_InmtzG_ow">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FJEggMn2EeOU_InmtzG_ow" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/Document.profile.uml#_qR44IMn0EeO9CYUoXDRplw"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/Document.profile.uml#_D0JcUMnzEeO9CYUoXDRplw"/>
+ </profileApplication>
+ </uml:Model>
+ <structure:Project xmi:id="_lNODoMbvEeO9CYUoXDRplw" author="P. Tessier (CEA LIST)" version="0.1" base_Model="_lNLnYMbvEeO9CYUoXDRplw" title="Synchronize automatically between views element with related model element in the model"/>
+ <structure:Requirements xmi:id="_lNOqsMbvEeO9CYUoXDRplw" base_Model="_lNLnYsbvEeO9CYUoXDRplw"/>
+ <structure:UseCases xmi:id="_lNOqscbvEeO9CYUoXDRplw" base_Model="_lNLnY8bvEeO9CYUoXDRplw"/>
+ <structure:Design xmi:id="_lNOqssbvEeO9CYUoXDRplw" base_Model="_lNLnZsbvEeO9CYUoXDRplw"/>
+ <structure:Tests xmi:id="_lNOqs8bvEeO9CYUoXDRplw" base_Model="_lNLnaMbvEeO9CYUoXDRplw"/>
+ <structure:UserDoc xmi:id="_uqNUsMofEeO3DsHezUU9Sg" base_Comment="_gP184MofEeO3DsHezUU9Sg"/>
+ <Requirements:Requirement xmi:id="_W7IlYMohEeO3DsHezUU9Sg" text="The synchronization shall be local for each graphical element for example: package compartment, attribute compartment..." id="Req001" base_Class="_W7DF0MohEeO3DsHezUU9Sg"/>
+ <Requirements:Requirement xmi:id="_9DBtAMoiEeO3DsHezUU9Sg" text="The synchronization shall be parameterized by CSS, by using a keyword and a value." id="Req002" base_Class="_9DAe4MoiEeO3DsHezUU9Sg"/>
+ <Requirements:Requirement xmi:id="_WWQr0MojEeO3DsHezUU9Sg" text="For an graphical element, it shall be possible to custom the synchonization" id="Req003" base_Class="_WWPdsMojEeO3DsHezUU9Sg"/>
+ <structure:DeveloperDoc xmi:id="_aDgUcMo1EeO3DsHezUU9Sg" base_Comment="_XBXZIMo1EeO3DsHezUU9Sg"/>
+ <structure:DeveloperDoc xmi:id="_c407wMo1EeO3DsHezUU9Sg" base_Comment="_a-G7gMo1EeO3DsHezUU9Sg"/>
+ <structure:DeveloperDoc xmi:id="_d06JgMo1EeO3DsHezUU9Sg" base_Comment="_bGhQoMo1EeO3DsHezUU9Sg"/>
+ <structure:DeveloperDoc xmi:id="_ym9xQMo3EeOzTpunJ7qmNw" base_Comment="_vxFwUMo3EeOzTpunJ7qmNw"/>
+ <Document:Document xmi:id="_C5PgIMrsEeOxaZrLLxAqiw" base_Model="_C5Nq8MrsEeOxaZrLLxAqiw" author="P. Tessier (CEA LIST)" version="0.1"/>
+ <Document:Content xmi:id="_C5SjcMrsEeOxaZrLLxAqiw" base_Comment="_C5QuQMrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C5U_sMrsEeOxaZrLLxAqiw" base_Package="_C5TKgMrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C5YqEMrsEeOxaZrLLxAqiw" base_Comment="_C5Xb8MrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C5cUcMrsEeOxaZrLLxAqiw" base_Comment="_C5bGUMrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C5f-0MrsEeOxaZrLLxAqiw" base_Comment="_C5ewsMrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C5ibEMrsEeOxaZrLLxAqiw" base_Package="_C5hM8MrsEeOxaZrLLxAqiw"/>
+ <Document:ImageRef xmi:id="_C65tAMrsEeOxaZrLLxAqiw" base_Comment="_C64e4MrsEeOxaZrLLxAqiw" ref="C:/Workspaces/head/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/UseCaseDiagram.png"/>
+ <Document:Section xmi:id="_C67iMMrsEeOxaZrLLxAqiw" base_Package="_C66UEMrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C69XYMrsEeOxaZrLLxAqiw" base_Comment="_C68JQMrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C6_MkMrsEeOxaZrLLxAqiw" base_Package="_C69-cMrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C7BBwMrsEeOxaZrLLxAqiw" base_Comment="_C6_zoMrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C7CP4MrsEeOxaZrLLxAqiw" base_Package="_C7Bo0MrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C7EFEMrsEeOxaZrLLxAqiw" base_Comment="_C7C28MrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C7F6QMrsEeOxaZrLLxAqiw" base_Package="_C7EsIMrsEeOxaZrLLxAqiw"/>
+ <Document:Content xmi:id="_C7HvcMrsEeOxaZrLLxAqiw" base_Comment="_C7GhUMrsEeOxaZrLLxAqiw"/>
+ <Document:Section xmi:id="_C7JkoMrsEeOxaZrLLxAqiw" base_Package="_C7IWgMrsEeOxaZrLLxAqiw"/>
+ <Document:ImageRef xmi:id="_C7b4gMrsEeOxaZrLLxAqiw" base_Comment="_C7aqYMrsEeOxaZrLLxAqiw" ref="C:/Workspaces/head/org.eclipse.papyrus.uml.diagram.synchronizeview/imgDOC/ArchitectureOverview.png"/>
+ <structure:DeveloperDoc xmi:id="_ZWAAEMr3EeOxaZrLLxAqiw" base_Comment="_X4kYwMr3EeOxaZrLLxAqiw"/>
+</xmi:XMI>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/schema/org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild.exsd b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/schema/org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild.exsd
new file mode 100644
index 00000000000..0dcbb536aef
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/schema/org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild.exsd
@@ -0,0 +1,131 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.uml.diagram.synchronizeview" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.papyrus.uml.diagram.synchronizeview" id="org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild" name="org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild"/>
+ </appinfo>
+ <documentation>
+ The goal of this extension point is to describe semantic elements that plays children of greaphical element.
+
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="semanticChild"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="semanticChild">
+ <annotation>
+ <documentation>
+ This is couple &lt;EditPart, ISynchroSemanticChild&gt; used to describes the list of semantic element that will represented as son of the current EditPart
+ </documentation>
+ </annotation>
+ <complexType>
+ <attribute name="editPart" type="string" use="required">
+ <annotation>
+ <documentation>
+ EditPart that will be synchronized
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.gef.EditPart"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="getSemanticChildren" type="string" use="required">
+ <annotation>
+ <documentation>
+ this class describes the list of semantic element that will represented ass son of the current EditPart
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.uml.diagram.synchronizeview.customization.ISynchroSemanticChild"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="priority" type="string">
+ <annotation>
+ <documentation>
+ the priority of the semantic childreen more this number is important, more the priority is high
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 1.0.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ &lt;extension
+ point=&quot;org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild&quot;&gt;
+ &lt;semanticChild
+ editPart=&quot;org.eclipse.papyrus.uml.diagram.composite.edit.parts.PropertyPartCompartmentEditPartCN&quot;
+ getSemanticChildren=&quot;org.eclipse.papyrus.uml.diagram.composite.SynchroSemanticForPopertyPartCompartment&quot;&gt;
+ &lt;/semanticChild&gt;
+&lt;/extension&gt;
+
+here we describe by using SynchroSemanticForPopertyPartCompartment instance the list of semantic childreen fir the the editpart PropertyPartCompartmentEditPartCN
+ </documentation>
+ </annotation>
+
+
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2014 CEA LIST.
+
+
+ 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
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/Activator.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/Activator.java
new file mode 100644
index 00000000000..62825a7a89e
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/Activator.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.uml.diagram.synchronizeview"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/ISynchroSemanticChild.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/ISynchroSemanticChild.java
new file mode 100644
index 00000000000..c530730b7f3
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/ISynchroSemanticChild.java
@@ -0,0 +1,37 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview.customization;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * this interface allows developer to specialize "semantic element" to display in the content of a given editPart
+ *
+ */
+public interface ISynchroSemanticChild {
+
+ /**
+ * return the list of semantic elements that play graphical children foe a given element and a given editpart
+ *
+ * @param semanticFromEditPart
+ * @return list of semantic elements
+ */
+ public List<EObject> getSynchroSemanticChild(EObject semanticFromEditPart);
+
+ /** EObject to listen **/
+ public EObject getSemanticEObjectToListen(EObject semanticFromEditPart);
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SemanticChild.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SemanticChild.java
new file mode 100644
index 00000000000..49d4f06b687
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SemanticChild.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview.customization;
+
+import org.eclipse.gef.EditPart;
+
+/**
+ * this class is the obejct that references the editpart and the an instance of ISynchroSemanticChild
+ *
+ */
+public class SemanticChild {
+
+ protected Class<? extends EditPart> editPart = null;
+
+ protected ISynchroSemanticChild synchroSemanticChild = null;
+
+ protected int priority = 0;
+
+
+ /**
+ *
+ * @return the referenced edipart, cannot but null.
+ */
+ public Class<? extends EditPart> getEditPart() {
+ return editPart;
+ }
+
+ /**
+ *
+ * @return an instance of ISynchroSemanticChild, cannot be null
+ */
+ public ISynchroSemanticChild getSynchroSemanticChild() {
+ return synchroSemanticChild;
+ }
+
+ /**
+ * get the priority for this mapping
+ *
+ * @return
+ */
+ public int getPriority() {
+ return priority;
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param editPart
+ * the editpart
+ * @param synchroSemanticChild
+ * the class that explain the list of semantic element that play graphical childreen.
+ * @param priority
+ * the priority of this mapping
+ */
+ public SemanticChild(Class<? extends EditPart> editPart, ISynchroSemanticChild synchroSemanticChild, int priority) {
+ super();
+ this.editPart = editPart;
+ this.synchroSemanticChild = synchroSemanticChild;
+ this.priority = priority;
+ }
+
+
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SynchroSemanticChildRegistry.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SynchroSemanticChildRegistry.java
new file mode 100644
index 00000000000..bf8320a5f69
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/customization/SynchroSemanticChildRegistry.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved.
+ * This code is the property of CEA LIST, this use is subject to specific
+ * agreement with the CEA LIST.
+ * Contributors:
+ * CEA LIST. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview.customization;
+
+import java.util.HashMap;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gef.EditPart;
+import org.eclipse.papyrus.infra.gmfdiag.common.Activator;
+import org.osgi.framework.Bundle;
+
+/**
+ * This the registry of to get the class that can give info about childreen of an editpart. this is a singleton.
+ */
+public class SynchroSemanticChildRegistry {
+
+ private static final String SEMANTICCHILD_EXTENSION_ID = "org.eclipse.papyrus.uml.diagram.synchronizeview.semanticchild";
+
+ private static final String EDITPART = "editPart";
+
+ private static final String GET_SEMANTIC_CHILDREN = "getSemanticChildren";
+
+ private static final String PRIORITY = "priority";
+
+ protected HashMap<Class<? extends EditPart>, SemanticChild> semanticMap = new HashMap<Class<? extends EditPart>, SemanticChild>();
+
+ protected static SynchroSemanticChildRegistry eInstance = null;
+
+ /**
+ *
+ * @return the instance of SynchroSemanticChildRegistry
+ */
+ public static SynchroSemanticChildRegistry getInstance() {
+ if(eInstance == null) {
+ eInstance = new SynchroSemanticChildRegistry();
+ }
+ return eInstance;
+ }
+
+ public SynchroSemanticChildRegistry() {
+ init();
+ }
+
+ /**
+ * this method init loading of extension points
+ */
+ public void init() {
+ // Reading data from plugins
+ IConfigurationElement[] configElements = Platform.getExtensionRegistry().getConfigurationElementsFor(SEMANTICCHILD_EXTENSION_ID);
+ for(int i = 0; i < configElements.length; i++) {
+ SemanticChild semanticChild = createSemanticChild(configElements[i]);
+ if(semanticMap.get(semanticChild.getEditPart()) != null) {
+ if(semanticMap.get(semanticChild.getEditPart()).getPriority() <= semanticChild.getPriority()) {
+ semanticMap.remove(semanticChild.getEditPart());
+ semanticMap.put(semanticChild.getEditPart(), semanticChild);
+ }
+ } else {
+ semanticMap.put(semanticChild.getEditPart(), semanticChild);
+ }
+ }
+ }
+
+
+
+
+ /**
+ * Load one semanticChild
+ *
+ * @param element
+ * the extension point
+ */
+ protected SemanticChild createSemanticChild(IConfigurationElement element) {
+ Class<? extends EditPart> editPart = null;
+ ISynchroSemanticChild synchroSemanticChild = null;
+ int priority = 0;
+ SemanticChild semanticChild = null;
+ try {
+ editPart = LoadExtension(element, element.getAttribute(EDITPART));
+ synchroSemanticChild = (ISynchroSemanticChild)createExtension(element, element.getAttribute(GET_SEMANTIC_CHILDREN));
+ if(element.getAttribute(PRIORITY) != null) {
+ priority = Integer.getInteger(element.getAttribute(PRIORITY)).intValue();
+ }
+ semanticChild = new SemanticChild(editPart, synchroSemanticChild, priority);
+ } catch (Exception e) {
+ Activator.log.error("" + element + " can not be loaded ", e);
+ }
+ return semanticChild;
+ }
+
+
+ /**
+ * Load an the class
+ *
+ * @param element
+ * the extension point
+ * @param classAttribute
+ * the name of the class to load
+ * @return the loaded Class
+ * @throws Exception
+ * if the class is not loaded
+ */
+ @SuppressWarnings("unchecked")
+ protected static Class<? extends EditPart> LoadExtension(final IConfigurationElement element, final String classAttribute) throws Exception {
+ try {
+ Bundle extensionBundle = Platform.getBundle(element.getDeclaringExtension().getNamespaceIdentifier());
+ Class<?> clazz = extensionBundle.loadClass(classAttribute);
+ return ((Class<? extends EditPart>)clazz);
+ } catch (Exception e) {
+ throw new Exception("unable to create Extension" + e);
+ }
+ }
+
+ /**
+ * Load an instance of a class
+ *
+ * @param element
+ * the extension point
+ * @param classAttribute
+ * the name of the class to load
+ * @return the loaded Class
+ * @throws Exception
+ * if the class is not loaded
+ */
+ protected static Object createExtension(final IConfigurationElement element, final String classAttribute) throws Exception {
+ try {
+ Bundle extensionBundle = Platform.getBundle(element.getDeclaringExtension().getNamespaceIdentifier());
+ @SuppressWarnings("rawtypes")
+ Class clazz = extensionBundle.loadClass(classAttribute);
+ Object obj = clazz.newInstance();
+ return obj;
+ } catch (Exception e) {
+ throw new Exception("unable to create Extension" + e);
+ }
+ }
+
+ /**
+ * @param editPart
+ * @return {@link ISynchroSemanticChild} from a editpart or null
+ */
+ public ISynchroSemanticChild getSynchroSemanticChild(Class<? extends EditPart> editPart) {
+ if(semanticMap.get(editPart) != null) {
+ return semanticMap.get(editPart).getSynchroSemanticChild();
+ }
+ return null;
+ }
+
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/editpolicy/SynchronizeViewEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/editpolicy/SynchronizeViewEditPolicy.java
new file mode 100644
index 00000000000..4cab54107f4
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/editpolicy/SynchronizeViewEditPolicy.java
@@ -0,0 +1,236 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview.editpolicy;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.gef.requests.CreateRequest;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor;
+import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.uml.diagram.synchronizeview.customization.ISynchroSemanticChild;
+import org.eclipse.papyrus.uml.diagram.synchronizeview.customization.SynchroSemanticChildRegistry;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * this edit policy is used to allowing synchronization between graphical element and element in the model
+ * It is based on canonical editpolicy but it has several differencies:
+ * - View Service cannot be called. To call it we need to get the identifier of the child that could be place in compartment. I is not possible to
+ * find in a generic way
+ * --> link to each Diagram Updater, and moreover some child has been created by custom code. In fact, the hierarchy of visual element must follow the
+ * hierachy of semantic element.
+ * --> this is not the case so the Diagram updater generated from the gmfgen has not the good info.
+ * To allow the creation we base our work on the mechanism of the drop.
+ */
+public class SynchronizeViewEditPolicy extends CanonicalEditPolicy {
+
+ ISynchroSemanticChild synchroSemanticChild = null;
+
+ EObject derivedSemanticHost = null;
+
+ @Override
+ public void activate() {
+ super.activate();
+ synchroSemanticChild = SynchroSemanticChildRegistry.getInstance().getSynchroSemanticChild(getHost().getClass());
+ if(synchroSemanticChild != null) {
+ derivedSemanticHost = synchroSemanticChild.getSemanticEObjectToListen(((Element)getSemanticHost()));
+ if(derivedSemanticHost != null) {
+ addListenerFilter("SYNCHRONIZE", this, derivedSemanticHost);
+ }
+ }
+ }
+
+ @Override
+ public boolean isEnabled() {
+ //by default there is no synchronization
+ if (getCanonicalStyle()==null){
+ return false;
+ }
+ return super.isEnabled();
+ }
+ @Override
+ protected List<EObject> getSemanticChildrenList() {
+ ArrayList<EObject> result = new ArrayList<EObject>();
+ Class<? extends EditPart> EditPart = getHost().getClass();
+ ISynchroSemanticChild synchroSemanticChild = SynchroSemanticChildRegistry.getInstance().getSynchroSemanticChild(EditPart);
+ if(synchroSemanticChild != null) {
+ ArrayList<EObject> ancestor = getAllEObjectAncestor();
+ List<EObject> tmplist = (synchroSemanticChild.getSynchroSemanticChild(((Element)getSemanticHost())));
+ for(Iterator<EObject> iterator = tmplist.iterator(); iterator.hasNext();) {
+ EObject eObject = (EObject)iterator.next();
+ if(ancestor.contains(eObject)) {
+ return Collections.emptyList();
+ }
+ }
+ return tmplist;
+ }
+ if(getSemanticHost() instanceof Element) {
+ result.addAll(((Element)getSemanticHost()).getOwnedElements());
+ return result;
+ }
+
+ return result;
+ }
+
+
+ /**
+ * This method is used to calculate if a semantic element has been already display in parent to avoid loop of display
+ *
+ * @return the list of all semantic element display by parents edipart.
+ */
+ protected ArrayList<EObject> getAllEObjectAncestor() {
+ ArrayList<EObject> ancestor = new ArrayList<EObject>();
+ EditPart currentEditPart = getHost();
+ if(currentEditPart.getModel() instanceof View) {
+ ancestor.add(((View)currentEditPart.getModel()).getElement());
+ }
+ while(currentEditPart.getParent() != null) {
+ currentEditPart = (EditPart)currentEditPart.getParent();
+ if(currentEditPart.getModel() instanceof View) {
+ ancestor.add(((View)currentEditPart.getModel()).getElement());
+ }
+ }
+ return ancestor;
+
+ }
+
+ @Override
+ protected void handleNotificationEvent(Notification event) {
+ super.handleNotificationEvent(event);
+ if(synchroSemanticChild != null) {
+ if(derivedSemanticHost == null && (synchroSemanticChild.getSemanticEObjectToListen(((Element)getSemanticHost())) != null)) {
+ derivedSemanticHost = synchroSemanticChild.getSemanticEObjectToListen(((Element)getSemanticHost()));
+ addListenerFilter("SYNCHRONIZE", this, derivedSemanticHost);
+ }
+ }
+ }
+
+ /**
+ * @see org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy#refreshSemantic()
+ * In order to connect the drop mechanism this method has be overloaded
+ */
+ protected void refreshSemantic() {
+ List<IAdaptable> createdViews = refreshSemanticChildrenByDrop();
+ makeViewsImmutable(createdViews);
+ }
+
+ /**
+ * this method is extracted from refreshSemanticChildren
+ * but instead of using the service view it uses the drop
+ *
+ * @return
+ */
+ protected List<IAdaptable> refreshSemanticChildrenByDrop() {
+ //-------------- code from superClass----------------
+ // Don't try to refresh children if the semantic element
+ // cannot be resolved.
+ if(resolveSemanticElement() == null) {
+ return Collections.emptyList();
+ }
+
+ // current views
+ List<View> viewChildren = getViewChildren();
+ List<EObject> semanticChildren = new ArrayList<EObject>(getSemanticChildrenList());
+
+ List<View> orphaned = cleanCanonicalSemanticChildren(viewChildren, semanticChildren);
+ boolean changed = false;
+ //
+ // delete all the remaining orphaned views
+ if(!orphaned.isEmpty()) {
+ changed = deleteViews(orphaned.iterator());
+ }
+
+ //
+ // create a view for each remaining semantic element.
+ List<IAdaptable> createdViews = Collections.emptyList();
+ if(!semanticChildren.isEmpty()) {
+ createdViews = createViews(semanticChildren);
+ }
+
+ if(changed || createdViews.size() > 0) {
+ postProcessRefreshSemantic(createdViews);
+ }
+
+
+ return createdViews;
+ }
+
+ @Override
+ protected Command getCreateViewCommand(CreateRequest request) {
+ //transform the request to drop request
+ if(request instanceof CreateViewRequest) {
+ CreateViewRequest createViewRequest = (CreateViewRequest)request;
+ createViewRequest.getViewDescriptors();
+
+ CompoundCommand compoundCommand = new CompoundCommand();
+ for(Iterator<? extends ViewDescriptor> iterator = createViewRequest.getViewDescriptors().iterator(); iterator.hasNext();) {
+ ViewDescriptor viewDescriptor = (ViewDescriptor)iterator.next();
+ EObject element = (EObject)viewDescriptor.getElementAdapter().getAdapter(EObject.class);
+
+ if(element != null) {
+ ArrayList<EObject> elementToDrop = new ArrayList<EObject>();
+ elementToDrop.add(element);
+ DropObjectsRequest dropRequest = new DropObjectsRequest();
+ dropRequest.setObjects(elementToDrop);
+ dropRequest.setLocation(createViewRequest.getLocation());
+
+ Command cmd = getHost().getCommand(dropRequest);
+ if(cmd != null && cmd.canExecute()) {
+ compoundCommand.add(cmd);
+ }
+ }
+
+ }
+ return compoundCommand;
+
+ }
+ Command cmd = super.getCreateViewCommand(request);
+
+ return cmd;
+ }
+
+ @Override
+ protected boolean shouldDeleteView(View view) {
+ //in order to avoid duplication of views allow deleting of edges
+ if(view instanceof Edge && view.getElement() == null) {
+
+ return true;
+ }
+ //it is managed by the service edit.
+ return false;
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected List<View> getViewChildren() {
+ List<View> children = super.getViewChildren();
+ children.addAll(((GraphicalEditPart)getHost()).getNotationView().getDiagram().getEdges());
+ return children;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/provider/SynchronizeEditPolicyProvider.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/provider/SynchronizeEditPolicyProvider.java
new file mode 100644
index 00000000000..0a826970ac1
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.synchronizeview/src/org/eclipse/papyrus/uml/diagram/synchronizeview/provider/SynchronizeEditPolicyProvider.java
@@ -0,0 +1,80 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ *
+ *
+ * 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.synchronizeview.provider;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
+import org.eclipse.gmf.runtime.common.core.service.IOperation;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderedShapeEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPoliciesOperation;
+import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.ServiceUtilsForEditPart;
+import org.eclipse.papyrus.uml.diagram.synchronizeview.editpolicy.SynchronizeViewEditPolicy;
+
+/**
+ * this is an editpolicy provider in charge to install a canonical edit policy on papyrus editpart
+ */
+public class SynchronizeEditPolicyProvider extends AbstractProvider implements IEditPolicyProvider {
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public void createEditPolicies(EditPart editPart) {
+
+ if(!(editPart instanceof ITextAwareEditPart)) {
+ if(editPart instanceof DiagramEditPart || editPart instanceof CompartmentEditPart || editPart instanceof IBorderedShapeEditPart) {
+ editPart.installEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CANONICAL_ROLE, new SynchronizeViewEditPolicy());
+ }
+ }
+ }
+
+
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public boolean provides(IOperation operation) {
+ CreateEditPoliciesOperation epOperation = (CreateEditPoliciesOperation)operation;
+
+ EditPart gep = epOperation.getEditPart();
+ // test if the edipart is a papyrus editpart
+ try {
+ if(ServiceUtilsForEditPart.getInstance().getServiceRegistry(gep) == null) {
+ return false;
+ }
+ } catch (org.osgi.framework.ServiceException ex) {
+ return false;
+ } catch (ServiceException e) {
+ return false;
+ }
+ //we are sure that this is a papyrus editpart
+ if(!(gep instanceof ITextAwareEditPart)) {
+ if(gep instanceof DiagramEditPart || gep instanceof CompartmentEditPart || gep instanceof IBorderedShapeEditPart) {
+ return true;
+ }
+ }
+
+
+
+ return false;
+ }
+
+
+}

Back to the top