Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2011-10-25 12:12:46 +0000
committercletavernie2011-10-25 12:12:46 +0000
commitf2066fd5041aff68cdf316b4ab6e0f742ba99071 (patch)
tree4a48328211c2c845b5751666db1150eb0a68c8f4 /plugins/views/modelexplorer
parent2a7ac0c8c25b0cdb7397c619086efd60df7e94d8 (diff)
downloadorg.eclipse.papyrus-f2066fd5041aff68cdf316b4ab6e0f742ba99071.tar.gz
org.eclipse.papyrus-f2066fd5041aff68cdf316b4ab6e0f742ba99071.tar.xz
org.eclipse.papyrus-f2066fd5041aff68cdf316b4ab6e0f742ba99071.zip
359057: [Architecture - SVN - Build] The Papyrus architecture should be refactored
https://bugs.eclipse.org/bugs/show_bug.cgi?id=359057
Diffstat (limited to 'plugins/views/modelexplorer')
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.classpath7
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.project28
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/META-INF/MANIFEST.MF18
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/about.html28
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/build.properties7
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.di23
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.notation1016
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.uml182
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.properties2
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.xml5
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/Activator.java69
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/AdvancedMETreeDialog.java158
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EMFObjectLabelProvider.java180
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EclassComparator.java43
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EditServiceValidator.java66
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/GraphicalModelExplorerBasedContentProvider.java556
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HierarchicViewerFilter.java140
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HistoryContentProvider.java47
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/IMetaclassFilteredContentProvider.java40
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassContentProvider.java89
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassLabelProvider.java39
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassViewerFilter.java60
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentFilter.java36
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentProvider.java69
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelContentProvider.java200
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelExplorerBasedTreeSelectorDialog.java143
27 files changed, 3259 insertions, 0 deletions
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.classpath b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.classpath
new file mode 100644
index 00000000000..2d1a4302f04
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.project b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.project
new file mode 100644
index 00000000000..c06b238c31e
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.modelexplorer.widgets</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/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.settings/org.eclipse.jdt.core.prefs b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..3ba4339a3b5
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Mar 07 14:04:29 CET 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/META-INF/MANIFEST.MF b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..259ae1de949
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.modelexplorer.widgets;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.modelexplorer.widgets.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.widgets;bundle-version="0.8.0";visibility:=reexport,
+ org.eclipse.papyrus.modelexplorer;bundle-version="0.8.0";visibility:=reexport,
+ org.eclipse.emf.facet.infra.browser;bundle-version="0.1.0";visibility:=reexport,
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.1.0";visibility:=reexport,
+ org.eclipse.papyrus.service.edit;bundle-version="0.8.0",
+ org.eclipse.emf.facet.infra.facet;bundle-version="0.1.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %providerName
+Export-Package: org.eclipse.papyrus.modelexplorer.widgets
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/about.html b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/about.html
new file mode 100644
index 00000000000..82d49bf5f81
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/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/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/build.properties b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/build.properties
new file mode 100644
index 00000000000..7db869bd2d4
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/build.properties
@@ -0,0 +1,7 @@
+#
+#Mon Sep 12 09:29:58 CEST 2011
+bin.includes=META-INF/,.,plugin.xml,about.html,plugin.properties
+output..=bin/
+src.includes=META-INF/,.,plugin.xml,about.html,plugin.properties
+source..=src/
+bin..=bin/
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.di b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.di
new file mode 100644
index 00000000000..517e7af45c6
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.di
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="MEDB.notation#_oI7l4EsZEeCsdNjiLCckhw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="MEDB.notation#_bwK8oEsdEeCsdNjiLCckhw"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="MEDB.notation#_oI7l4EsZEeCsdNjiLCckhw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="MEDB.notation#_bwK8oEsdEeCsdNjiLCckhw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.notation b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.notation
new file mode 100644
index 00000000000..9b34d1e6b6b
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.notation
@@ -0,0 +1,1016 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML">
+ <notation:Diagram xmi:id="_oI7l4EsZEeCsdNjiLCckhw" type="PapyrusUMLClassDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_9dxcgEsZEeCsdNjiLCckhw" type="2007" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dxcgksZEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dxcg0sZEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dxchksZEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dxch0sZEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__UFd4EsZEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__UFd4UsZEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9dxciEsZEeCsdNjiLCckhw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9dxciUsZEeCsdNjiLCckhw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_1C5sgUsaEeCsdNjiLCckhw" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1C5sg0saEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1C5shEsaEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1C5shUsaEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1C5shksaEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1C5sh0saEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1DDdgEsaEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1DDdgUsaEeCsdNjiLCckhw" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1DDdgksaEeCsdNjiLCckhw" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1DDdg0saEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1DDdhEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1DDdhUsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1DDdhksaEeCsdNjiLCckhw" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1DDdh0saEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1DDdiEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1DDdiUsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1DDdiksaEeCsdNjiLCckhw" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1DDdi0saEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1DDdjEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1DDdjUsaEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_1C5sgEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1C5sgksaEeCsdNjiLCckhw" x="295" y="27" width="229" height="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YVutsEsrEeCT26UdVsfwqQ" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YVutsksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YVuts0srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YVuttEsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YVuttUsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YVuttksrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YVutt0srEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YVutuEsrEeCT26UdVsfwqQ" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YVutuUsrEeCT26UdVsfwqQ" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_YVutuksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_YVutu0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YVutvEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YVutvUsrEeCT26UdVsfwqQ" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_YVutvksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_YVutv0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YVutwEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YVutwUsrEeCT26UdVsfwqQ" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_YVutwksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_YVutw0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YVutxEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_5j-rAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YVutsUsrEeCT26UdVsfwqQ" x="40" y="22" width="221" height="57"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kgZTwEsrEeCT26UdVsfwqQ" type="3023" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kgZTwksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kgZTw0srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kgZTxEsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kgZTxUsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kgZTxksrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kgZTx0srEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kgZTyEsrEeCT26UdVsfwqQ" type="5049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kgZTyUsrEeCT26UdVsfwqQ" visible="false" type="7027">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kgZTyksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kgZTy0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kgZTzEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kgZTzUsrEeCT26UdVsfwqQ" visible="false" type="7028">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kgZTzksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kgZTz0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kgZT0EsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kgZT0UsrEeCT26UdVsfwqQ" visible="false" type="7029">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kgZT0ksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kgZT00srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kgZT1EsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_QaNXsEsiEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kgZTwUsrEeCT26UdVsfwqQ" x="380" y="167" width="186" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qOoo8EsrEeCT26UdVsfwqQ" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOoo8ksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOoo80srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOoo9EsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOoo9UsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOoo9ksrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOoo90srEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qOoo-EsrEeCT26UdVsfwqQ" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qOoo-UsrEeCT26UdVsfwqQ" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qOoo-ksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qOoo-0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOoo_EsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qOoo_UsrEeCT26UdVsfwqQ" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qOoo_ksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qOoo_0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOopAEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qOopAUsrEeCT26UdVsfwqQ" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qOopAksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qOopA0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOopBEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_9uZdAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOoo8UsrEeCT26UdVsfwqQ" x="1010" y="7" width="121" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sVx7oEsrEeCT26UdVsfwqQ" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sVx7oksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sVx7o0srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sVx7pEsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sVx7pUsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sVx7pksrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sVx7p0srEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sVx7qEsrEeCT26UdVsfwqQ" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sVx7qUsrEeCT26UdVsfwqQ" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sVx7qksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sVx7q0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sVx7rEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sVx7rUsrEeCT26UdVsfwqQ" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sVx7rksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sVx7r0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sVx7sEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sVx7sUsrEeCT26UdVsfwqQ" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sVx7sksrEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sVx7s0srEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sVx7tEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_AMtvAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sVx7oUsrEeCT26UdVsfwqQ" x="560" y="22" width="206" height="51"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dxciksZEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Package" href="MEDB.uml#_yl3e0EsZEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dxcgUsZEeCsdNjiLCckhw" x="-200" y="435" width="1391" height="281"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_o7yJsEsaEeCsdNjiLCckhw" type="2007" fontHeight="8" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o7yJsksaEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o7yJs0saEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o7yJtEsaEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o7yJtUsaEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o7yJtksaEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o7yJt0saEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o7yJuEsaEeCsdNjiLCckhw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o7yJuUsaEeCsdNjiLCckhw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_fKjgMEsaEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fKjgMksaEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fKjgM0saEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fKjgNEsaEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fKjgNUsaEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fKjgNksaEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fKjgN0saEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fKjgOEsaEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fKjgOUsaEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fKjgOksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fKjgO0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fKjgPEsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fKjgPUsaEeCsdNjiLCckhw" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fKjgPksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fKjgP0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fKjgQEsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fKjgQUsaEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_fKjgQksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_fKjgQ0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fKjgREsaEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_fJ9qUEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fKjgMUsaEeCsdNjiLCckhw" x="395" y="130" width="166" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hj4vEEsaEeCsdNjiLCckhw" type="2004" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hj4vEksaEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hj4vE0saEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hj4vFEsaEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hj4vFUsaEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hj4vFksaEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hj4vF0saEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hj4vGEsaEeCsdNjiLCckhw" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hj4vGUsaEeCsdNjiLCckhw" visible="false" type="7006">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hj4vGksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hj4vG0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hj4vHEsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hj4vHUsaEeCsdNjiLCckhw" visible="false" type="7007">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hj4vHksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hj4vH0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hj4vIEsaEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hj4vIUsaEeCsdNjiLCckhw" visible="false" type="7008">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hj4vIksaEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hj4vI0saEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hj4vJEsaEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_hjSSIEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hj4vEUsaEeCsdNjiLCckhw" x="25" y="10" width="561" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZX7k0UsbEeCsdNjiLCckhw" type="3023" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZX7k00sbEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZX7k1EsbEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZX7k1UsbEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZX7k1ksbEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZX7k10sbEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZX7k2EsbEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZX7k2UsbEeCsdNjiLCckhw" type="5049"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZX7k2ksbEeCsdNjiLCckhw" visible="false" type="7027">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZX7k20sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZX7k3EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZX7k3UsbEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZX7k3ksbEeCsdNjiLCckhw" visible="false" type="7028">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZX7k30sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZX7k4EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZX7k4UsbEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZX7k4ksbEeCsdNjiLCckhw" visible="false" type="7029">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZX7k40sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZX7k5EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZX7k5UsbEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_ZX7k0EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZX7k0ksbEeCsdNjiLCckhw" x="650" y="130" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V5xmcUscEeCsdNjiLCckhw" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5xmc0scEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5xmdEscEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5xmdUscEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5xmdkscEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5xmd0scEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5xmeEscEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V5xmeUscEeCsdNjiLCckhw" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V5xmekscEeCsdNjiLCckhw" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V5xme0scEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V5xmfEscEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V5xmfUscEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V5xmfkscEeCsdNjiLCckhw" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V5xmf0scEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V5xmgEscEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V5xmgUscEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V5xmgkscEeCsdNjiLCckhw" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V5xmg0scEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V5xmhEscEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V5xmhUscEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_V5xmcEscEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V5xmckscEeCsdNjiLCckhw" x="176" y="120" height="57"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o7yJuksaEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Package" href="MEDB.uml#_o7LswEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o7yJsUsaEeCsdNjiLCckhw" x="-40" y="85" width="801" height="241"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FX3IwEsbEeCsdNjiLCckhw" type="2007" fontHeight="8" transparency="0" gradient="8905185, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FX3IwksbEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX3Iw0sbEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FX3IxEsbEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX3IxUsbEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FX3IxksbEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX3Ix0sbEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FX3IyEsbEeCsdNjiLCckhw" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FX3IyUsbEeCsdNjiLCckhw" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_Gpqu4UsbEeCsdNjiLCckhw" type="3010" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gpqu40sbEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gpqu5EsbEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gpqu5UsbEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gpqu5ksbEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gpqu50sbEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gpqu6EsbEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Gpqu6UsbEeCsdNjiLCckhw" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Gpqu6ksbEeCsdNjiLCckhw" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gpqu60sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Gpqu7EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gpqu7UsbEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Gpqu7ksbEeCsdNjiLCckhw" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gpqu70sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Gpqu8EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gpqu8UsbEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Gpqu8ksbEeCsdNjiLCckhw" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gpqu80sbEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Gpqu9EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gpqu9UsbEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_Gpqu4EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gpqu4ksbEeCsdNjiLCckhw" x="10" y="5" width="133" height="45"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FX3IyksbEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Package" href="MEDB.uml#_FXRS4EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FX3IwUsbEeCsdNjiLCckhw" x="785" y="85" width="216" height="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__1DXwEsrEeCT26UdVsfwqQ" type="2007" fontHeight="8" transparency="0" gradient="16711808, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1DXwksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1DXw0srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1DXxEsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1DXxUsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1MhsEsrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1MhsUsrEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__1MhsksrEeCT26UdVsfwqQ" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="__1Mhs0srEeCT26UdVsfwqQ" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_s5Y_AEsrEeCT26UdVsfwqQ" type="2008" fontHeight="8" transparency="0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s5Y_AksrEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s5Y_A0srEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s5Y_BEsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s5Y_BUsrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s5Y_BksrEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s5iwAEsrEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_s5iwAUsrEeCT26UdVsfwqQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_s5iwAksrEeCT26UdVsfwqQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_s5iwA0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_s5iwBEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s5iwBUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_s5iwBksrEeCT26UdVsfwqQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_s5iwB0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_s5iwCEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s5iwCUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_s5iwCksrEeCT26UdVsfwqQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_s5iwC0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_s5iwDEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s5iwDUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_wr_yIEskEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s5Y_AUsrEeCT26UdVsfwqQ" x="5" y="20" height="66"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1MhtEsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Package" href="MEDB.uml#__0mr0EsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1DXwUsrEeCT26UdVsfwqQ" x="-195" y="90" width="131" height="141"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_oI7l4UsZEeCsdNjiLCckhw"/>
+ <element xmi:type="uml:Model" href="MEDB.uml#_oIVI8EsZEeCsdNjiLCckhw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_l44ZYEsaEeCsdNjiLCckhw" type="4003" source="_fKjgMEsaEeCsdNjiLCckhw" target="_hj4vEEsaEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_l44ZY0saEeCsdNjiLCckhw" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l44ZZEsaEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l44ZZUsaEeCsdNjiLCckhw" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l44ZZksaEeCsdNjiLCckhw" x="23" y="47"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_l44ZYUsaEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:InterfaceRealization" href="MEDB.uml#_l4SjgEsaEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l44ZYksaEeCsdNjiLCckhw" points="[50, -14, -120, 46]$[137, -10, -33, 50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-ZLgEsaEeCsdNjiLCckhw" id="(0.5024390243902439,0.017543859649122806)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MVW0cEsdEeCsdNjiLCckhw" id="(0.8163992869875223,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZBlE4EscEeCsdNjiLCckhw" type="4002" source="_1C5sgUsaEeCsdNjiLCckhw" target="_V5xmcUscEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZBlE40scEeCsdNjiLCckhw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZBlE5EscEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZBlE4UscEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_ZBb68EscEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZBlE4kscEeCsdNjiLCckhw" points="[1, -7, -126, 478]$[106, -479, -21, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZBu14EscEeCsdNjiLCckhw" id="(0.375,0.14583333333333334)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZBu14UscEeCsdNjiLCckhw" id="(0.39,0.9298245614035088)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YW7AgEsrEeCT26UdVsfwqQ" type="4001" source="_YVutsEsrEeCT26UdVsfwqQ" target="_hj4vEEsaEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YW7Ag0srEeCT26UdVsfwqQ" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKcEsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YXEKcUsrEeCT26UdVsfwqQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKcksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YXEKc0srEeCT26UdVsfwqQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKdEsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YXEKdUsrEeCT26UdVsfwqQ" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKdksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YXEKd0srEeCT26UdVsfwqQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKeEsrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YXEKeUsrEeCT26UdVsfwqQ" visible="false" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YXEKeksrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YW7AgUsrEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_rsHt40sbEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YW7AgksrEeCT26UdVsfwqQ" points="[85, -28, -230, 347]$[85, -357, -230, 18]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mnrwYEsrEeCT26UdVsfwqQ" type="4001" source="_1C5sgUsaEeCsdNjiLCckhw" target="_kgZTwEsrEeCT26UdVsfwqQ" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwY0srEeCT26UdVsfwqQ" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwZEsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwZUsrEeCT26UdVsfwqQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwZksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwZ0srEeCT26UdVsfwqQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwaEsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwaUsrEeCT26UdVsfwqQ" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwaksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwa0srEeCT26UdVsfwqQ" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwbEsrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mnrwbUsrEeCT26UdVsfwqQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mnrwbksrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mnrwYUsrEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_DoIbE0scEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mnrwYksrEeCT26UdVsfwqQ" points="[16, 23, -88, -123]$[84, 118, -20, -28]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vFcm4EsrEeCT26UdVsfwqQ" type="4001" source="_fKjgMEsaEeCsdNjiLCckhw" target="_ZX7k0UsbEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm40srEeCT26UdVsfwqQ" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm5EsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm5UsrEeCT26UdVsfwqQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm5ksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm50srEeCT26UdVsfwqQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm6EsrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm6UsrEeCT26UdVsfwqQ" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm6ksrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm60srEeCT26UdVsfwqQ" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm7EsrEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vFcm7UsrEeCT26UdVsfwqQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vFcm7ksrEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vFcm4UsrEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_fJv9A0scEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vFcm4ksrEeCT26UdVsfwqQ" points="[83, 7, -154, 0]$[182, 0, -55, -7]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5Ynf0EsrEeCT26UdVsfwqQ" type="4002" source="_qOoo8EsrEeCT26UdVsfwqQ" target="_Gpqu4UsbEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5Ynf00srEeCT26UdVsfwqQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5Ynf1EsrEeCT26UdVsfwqQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_5Ynf0UsrEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_KVFQsEsbEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5Ynf0ksrEeCT26UdVsfwqQ" points="[24, -50, -158, 334]$[171, -361, -11, 23]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_IqNakEssEeCT26UdVsfwqQ" type="4002" source="_sVx7oEsrEeCT26UdVsfwqQ" target="_fKjgMEsaEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IqNak0ssEeCT26UdVsfwqQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IqNalEssEeCT26UdVsfwqQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_IqNakUssEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_m49WUEsaEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IqNakkssEeCT26UdVsfwqQ" points="[26, -50, -184, 347]$[200, -379, -10, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__p3mAEssEeCT26UdVsfwqQ" id="(0.42718446601941745,0.0196078431372549)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YFeOsEssEeCT26UdVsfwqQ" type="4003" source="_sVx7oEsrEeCT26UdVsfwqQ" target="_kgZTwEsrEeCT26UdVsfwqQ" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YFeOs0ssEeCT26UdVsfwqQ" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YFeOtEssEeCT26UdVsfwqQ" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YFeOtUssEeCT26UdVsfwqQ" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YFeOtkssEeCT26UdVsfwqQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YFeOsUssEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:InterfaceRealization" href="MEDB.uml#_kbJWcEsiEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YFeOskssEeCT26UdVsfwqQ" points="[-103, -12, 132, 15]$[-142, -17, 93, 10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_c8b9oEssEeCT26UdVsfwqQ" type="4002" source="_YVutsEsrEeCT26UdVsfwqQ" target="_s5Y_AEsrEeCT26UdVsfwqQ" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_c8b9o0ssEeCT26UdVsfwqQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_c8b9pEssEeCT26UdVsfwqQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_c8b9oUssEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_1izwEEskEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c8b9okssEeCT26UdVsfwqQ" points="[-80, -28, 10, 317]$[-80, -312, 10, 33]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_X_peEEstEeCT26UdVsfwqQ" type="4001" source="_sVx7oEsrEeCT26UdVsfwqQ" target="_qOoo8EsrEeCT26UdVsfwqQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPEEstEeCT26UdVsfwqQ" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPEUstEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPEkstEeCT26UdVsfwqQ" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPE0stEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPFEstEeCT26UdVsfwqQ" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPFUstEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPFkstEeCT26UdVsfwqQ" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPF0stEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPGEstEeCT26UdVsfwqQ" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPGUstEeCT26UdVsfwqQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X_zPGkstEeCT26UdVsfwqQ" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X_zPG0stEeCT26UdVsfwqQ" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_X_peEUstEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_X_MyIEstEeCT26UdVsfwqQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X_peEkstEeCT26UdVsfwqQ" points="[26, -3, -274, 0]$[270, 2, -30, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAsm8EstEeCT26UdVsfwqQ" id="(0.8737864077669902,0.37254901960784315)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAsm8UstEeCT26UdVsfwqQ" id="(0.24793388429752067,0.6078431372549019)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_bwK8oEsdEeCsdNjiLCckhw" type="PapyrusUMLClassDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_d_D2EEsdEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d_D2EksdEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d_D2E0sdEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d_D2FEsdEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d_D2FUsdEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d_D2FksdEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d_D2F0sdEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d_D2GEsdEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d_D2GUsdEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_d_D2GksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_d_D2G0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d_D2HEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d_D2HUsdEeCsdNjiLCckhw" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_d_D2HksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_d_D2H0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d_D2IEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d_D2IUsdEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_d_D2IksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_d_D2I0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d_D2JEsdEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_1C5sgEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d_D2EUsdEeCsdNjiLCckhw" x="100" y="215" width="249" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tO2aAEsdEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tO2aAksdEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tO2aA0sdEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tO2aBEsdEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tO2aBUsdEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tO2aBksdEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tO2aB0sdEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tO2aCEsdEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tO2aCUsdEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tO2aCksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tO2aC0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tO2aDEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tO2aDUsdEeCsdNjiLCckhw" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tO2aDksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tO2aD0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tO2aEEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tO2aEUsdEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tO2aEksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tO2aE0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tO2aFEsdEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_AMtvAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tO2aAUsdEeCsdNjiLCckhw" x="625" y="205" width="196" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uKTVoEsdEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKTVoksdEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKTVo0sdEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKTVpEsdEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKTVpUsdEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKTVpksdEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKTVp0sdEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uKTVqEsdEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uKTVqUsdEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uKTVqksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uKTVq0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uKTVrEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uKTVrUsdEeCsdNjiLCckhw" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uKTVrksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uKTVr0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uKTVsEsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uKTVsUsdEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_uKTVsksdEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_uKTVs0sdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uKTVtEsdEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_fJ9qUEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uKTVoUsdEeCsdNjiLCckhw" x="660" y="-9" width="166" height="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FIKYgEseEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FIKYgkseEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FIKYg0seEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FIKYhEseEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FIKYhUseEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FIKYhkseEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FIKYh0seEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FIKYiEseEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FIKYiUseEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FIKYikseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FIKYi0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FIKYjEseEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FIKYjUseEeCsdNjiLCckhw" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FIKYjkseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FIKYj0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FIKYkEseEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FIKYkUseEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FIKYkkseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FIKYk0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FIKYlEseEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_5j-rAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FIKYgUseEeCsdNjiLCckhw" x="280" y="430" width="156" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V9k2cEseEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9k2ckseEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9k2c0seEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9k2dEseEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9k2dUseEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9k2dkseEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9k2d0seEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V9k2eEseEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9k2eUseEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9k2ekseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9k2e0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9k2fEseEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9k2fUseEeCsdNjiLCckhw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_rxy7QEsfEeCsdNjiLCckhw" type="3013" fontHeight="8" lineColor="0">
+ <element xmi:type="uml:Operation" href="MEDB.uml#_rxgAUEsfEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rxy7QUsfEeCsdNjiLCckhw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9k2fkseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9k2f0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9k2gEseEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V9k2gUseEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V9k2gkseEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V9k2g0seEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9k2hEseEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_9uZdAEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9k2cUseEeCsdNjiLCckhw" x="920" y="200" width="131" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QagSoEsiEeCsdNjiLCckhw" type="2004" fontHeight="8" transparency="0" gradient="16777088, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QagSoksiEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QagSo0siEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QagSpEsiEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QagSpUsiEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QagSpksiEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QagSp0siEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QagSqEsiEeCsdNjiLCckhw" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QaqDoEsiEeCsdNjiLCckhw" visible="false" type="7006">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QaqDoUsiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QaqDoksiEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QaqDo0siEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QaqDpEsiEeCsdNjiLCckhw" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_h9_w0EsdEeCsdNjiLCckhw" type="3013" fontHeight="8" lineColor="0">
+ <element xmi:type="uml:Operation" href="MEDB.uml#_h91_0EsdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_h9_w0UsdEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jgxyMEsdEeCsdNjiLCckhw" type="3013" fontHeight="8" lineColor="0">
+ <element xmi:type="uml:Operation" href="MEDB.uml#_jgooQEsdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jgxyMUsdEeCsdNjiLCckhw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QaqDpUsiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QaqDpksiEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QaqDp0siEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QaqDqEsiEeCsdNjiLCckhw" visible="false" type="7008">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QaqDqUsiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QaqDqksiEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QaqDq0siEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_QaNXsEsiEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QagSoUsiEeCsdNjiLCckhw" x="438" y="84" width="178" height="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tixpUEsiEeCsdNjiLCckhw" type="2004" fontHeight="8" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tixpUksiEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tixpU0siEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tixpVEsiEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tixpVUsiEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tixpVksiEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tixpV0siEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tixpWEsiEeCsdNjiLCckhw" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tixpWUsiEeCsdNjiLCckhw" visible="false" type="7006">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tixpWksiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tixpW0siEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tixpXEsiEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tixpXUsiEeCsdNjiLCckhw" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_nmax4EsdEeCsdNjiLCckhw" type="3013" fontHeight="8" lineColor="0">
+ <element xmi:type="uml:Operation" href="MEDB.uml#_nmRn8EsdEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nmax4UsdEeCsdNjiLCckhw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tixpXksiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tixpX0siEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tixpYEsiEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tixpYUsiEeCsdNjiLCckhw" visible="false" type="7008">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tixpYksiEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tixpY0siEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tixpZEsiEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_hjSSIEsaEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tixpUUsiEeCsdNjiLCckhw" x="440" y="225" width="146" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wsI8EEskEeCsdNjiLCckhw" type="2008" fontHeight="8" transparency="0" gradient="16711808, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wsI8EkskEeCsdNjiLCckhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wsI8E0skEeCsdNjiLCckhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wsI8FEskEeCsdNjiLCckhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wsI8FUskEeCsdNjiLCckhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wsI8FkskEeCsdNjiLCckhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wsI8F0skEeCsdNjiLCckhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wsI8GEskEeCsdNjiLCckhw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wsI8GUskEeCsdNjiLCckhw" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wsI8GkskEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wsI8G0skEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wsI8HEskEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wsI8HUskEeCsdNjiLCckhw" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wsI8HkskEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wsI8H0skEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wsI8IEskEeCsdNjiLCckhw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wsI8IUskEeCsdNjiLCckhw" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wsI8IkskEeCsdNjiLCckhw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wsI8I0skEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wsI8JEskEeCsdNjiLCckhw"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_wr_yIEskEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wsI8EUskEeCsdNjiLCckhw" x="303" y="323" height="53"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Eq_BYUsrEeCT26UdVsfwqQ" type="2004" fontHeight="8" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Eq_BY0srEeCT26UdVsfwqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq_BZEsrEeCT26UdVsfwqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Eq_BZUsrEeCT26UdVsfwqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq_BZksrEeCT26UdVsfwqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Eq_BZ0srEeCT26UdVsfwqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq_BaEsrEeCT26UdVsfwqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Eq_BaUsrEeCT26UdVsfwqQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Eq_BaksrEeCT26UdVsfwqQ" visible="false" type="7006">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Eq_Ba0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Eq_BbEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eq_BbUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Eq_BbksrEeCT26UdVsfwqQ" visible="false" type="7007">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Eq_Bb0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Eq_BcEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eq_BcUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Eq_BcksrEeCT26UdVsfwqQ" visible="false" type="7008">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Eq_Bc0srEeCT26UdVsfwqQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Eq_BdEsrEeCT26UdVsfwqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eq_BdUsrEeCT26UdVsfwqQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="MEDB.uml#_ZX7k0EsbEeCsdNjiLCckhw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eq_BYksrEeCT26UdVsfwqQ" x="935" y="-15" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_G1jVEE5YEeCu1u0cVaNn3Q" type="2008" fontHeight="8" transparency="0" gradient="13420443, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G1jVEk5YEeCu1u0cVaNn3Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G1jVE05YEeCu1u0cVaNn3Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G1jVFE5YEeCu1u0cVaNn3Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G1jVFU5YEeCu1u0cVaNn3Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G1jVFk5YEeCu1u0cVaNn3Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G1jVF05YEeCu1u0cVaNn3Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G1tGEE5YEeCu1u0cVaNn3Q" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G1tGEU5YEeCu1u0cVaNn3Q" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G1tGEk5YEeCu1u0cVaNn3Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G1tGE05YEeCu1u0cVaNn3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G1tGFE5YEeCu1u0cVaNn3Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G1tGFU5YEeCu1u0cVaNn3Q" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G1tGFk5YEeCu1u0cVaNn3Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G1tGF05YEeCu1u0cVaNn3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G1tGGE5YEeCu1u0cVaNn3Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_G1tGGU5YEeCu1u0cVaNn3Q" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_G1tGGk5YEeCu1u0cVaNn3Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_G1tGG05YEeCu1u0cVaNn3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G1tGHE5YEeCu1u0cVaNn3Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="MEDB.uml#_GyuDgU5YEeCu1u0cVaNn3Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G1jVEU5YEeCu1u0cVaNn3Q" x="75" y="485" width="201" height="51"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_bwK8oUsdEeCsdNjiLCckhw"/>
+ <element xmi:type="uml:Package" href="MEDB.uml#_yl3e0EsZEeCsdNjiLCckhw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uK5LgEsdEeCsdNjiLCckhw" type="4002" source="_tO2aAEsdEeCsdNjiLCckhw" target="_uKTVoEsdEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uK5Lg0sdEeCsdNjiLCckhw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uK5LhEsdEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uK5LgUsdEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_m49WUEsaEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uK5LgksdEeCsdNjiLCckhw" points="[27, -38, 7, 194]$[27, -212, 7, 20]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_AjiWwEseEeCsdNjiLCckhw" type="4001" source="_d_D2EEsdEeCsdNjiLCckhw" target="_QagSoEsiEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWw0seEeCsdNjiLCckhw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWxEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWxUseEeCsdNjiLCckhw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWxkseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWx0seEeCsdNjiLCckhw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWyEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWyUseEeCsdNjiLCckhw" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWykseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWy0seEeCsdNjiLCckhw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWzEseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AjiWzUseEeCsdNjiLCckhw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AjiWzkseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_AjiWwUseEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_DoIbE0scEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AjiWwkseEeCsdNjiLCckhw" points="[125, 8, -299, -21]$[336, 22, -88, -7]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fUPuEEsiEeCsdNjiLCckhw" id="(0.07228915662650602,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FInEcEseEeCsdNjiLCckhw" type="4001" source="_d_D2EEsdEeCsdNjiLCckhw" target="_wsI8EEskEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEc0seEeCsdNjiLCckhw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEdEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEdUseEeCsdNjiLCckhw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEdkseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEd0seEeCsdNjiLCckhw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEeEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEeUseEeCsdNjiLCckhw" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEekseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEe0seEeCsdNjiLCckhw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEfEseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FInEfUseEeCsdNjiLCckhw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FInEfkseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FInEcUseEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_NlZ8g0scEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FInEckseEeCsdNjiLCckhw" points="[0, 24, -84, -89]$[0, 121, -84, 8]$[79, 121, -5, 8]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgJL4EskEeCsdNjiLCckhw" id="(0.05,0.56)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PuQNcEseEeCsdNjiLCckhw" type="4001" source="_FIKYgEseEeCsdNjiLCckhw" target="_tixpUEsiEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNc0seEeCsdNjiLCckhw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNdEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNdUseEeCsdNjiLCckhw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNdkseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNd0seEeCsdNjiLCckhw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNeEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNeUseEeCsdNjiLCckhw" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNekseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNe0seEeCsdNjiLCckhw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNfEseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PuQNfUseEeCsdNjiLCckhw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PuQNfkseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PuQNcUseEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_Pt9Sg0seEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PuQNckseEeCsdNjiLCckhw" points="[15, 11, -49, 209]$[62, 11, -2, 209]$[62, -193, -2, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pus5YEseEeCsdNjiLCckhw" id="(0.9336283185840708,0.21)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pus5YUseEeCsdNjiLCckhw" id="(0.5821917808219178,0.9107142857142857)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V-BiYEseEeCsdNjiLCckhw" type="4001" source="_uKTVoEsdEeCsdNjiLCckhw" target="_Eq_BYUsrEeCT26UdVsfwqQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-BiY0seEeCsdNjiLCckhw" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BiZEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-BiZUseEeCsdNjiLCckhw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BiZkseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-BiZ0seEeCsdNjiLCckhw" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BiaEseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-BiaUseEeCsdNjiLCckhw" visible="false" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BiakseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-Bia0seEeCsdNjiLCckhw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BibEseEeCsdNjiLCckhw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V-BibUseEeCsdNjiLCckhw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V-BibkseEeCsdNjiLCckhw" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_V-BiYUseEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Association" href="MEDB.uml#_fJv9A0scEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V-BiYkseEeCsdNjiLCckhw" points="[19, -8, -114, 0]$[128, -8, -5, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FqTwYEsrEeCT26UdVsfwqQ" id="(0.8855421686746988,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GJJogEsrEeCT26UdVsfwqQ" id="(0.045454545454545456,0.28)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kbcRYEsiEeCsdNjiLCckhw" type="4003" source="_tO2aAEsdEeCsdNjiLCckhw" target="_QagSoEsiEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kbcRY0siEeCsdNjiLCckhw" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kbcRZEsiEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kbcRZUsiEeCsdNjiLCckhw" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kbcRZksiEeCsdNjiLCckhw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kbcRYUsiEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:InterfaceRealization" href="MEDB.uml#_kbJWcEsiEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kbcRYksiEeCsdNjiLCckhw" points="[-43, -38, 113, 103]$[-119, -156, 37, -15]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kcfaQEsiEeCsdNjiLCckhw" id="(0.7771084337349398,0.25)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0jG4gEsiEeCsdNjiLCckhw" type="4002" source="_QagSoEsiEeCsdNjiLCckhw" target="_tixpUEsiEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0jG4g0siEeCsdNjiLCckhw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0jG4hEsiEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0jG4gUsiEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_0i9ukEsiEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0jG4gksiEeCsdNjiLCckhw" points="[-15, 63, 3, -97]$[-15, 132, 3, -28]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0jQpgEsiEeCsdNjiLCckhw" id="(0.5240963855421686,0.125)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1i86AEskEeCsdNjiLCckhw" type="4002" source="_FIKYgEseEeCsdNjiLCckhw" target="_wsI8EEskEeCsdNjiLCckhw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1jGrAEskEeCsdNjiLCckhw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1jGrAUskEeCsdNjiLCckhw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1i86AUskEeCsdNjiLCckhw" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_1izwEEskEeCsdNjiLCckhw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1i86AkskEeCsdNjiLCckhw" points="[-4, -9, 33, 78]$[-40, -66, -3, 21]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1jZl8EskEeCsdNjiLCckhw" id="(0.4026548672566372,0.09)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1jZl8UskEeCsdNjiLCckhw" id="(0.46,0.79)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LkBVwEsrEeCT26UdVsfwqQ" type="4003" source="_V9k2cEseEeCsdNjiLCckhw" target="_Eq_BYUsrEeCT26UdVsfwqQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_LkBVw0srEeCT26UdVsfwqQ" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LkBVxEsrEeCT26UdVsfwqQ" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LkBVxUsrEeCT26UdVsfwqQ" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LkBVxksrEeCT26UdVsfwqQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LkBVwUsrEeCT26UdVsfwqQ" fontHeight="8"/>
+ <element xmi:type="uml:InterfaceRealization" href="MEDB.uml#_LiOmAEsrEeCT26UdVsfwqQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LkBVwksrEeCT26UdVsfwqQ" points="[1, -8, -34, 195]$[90, -204, 55, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LlD3kEsrEeCT26UdVsfwqQ" id="(0.5725190839694656,0.17391304347826086)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_8IL_8FF3EeC_fOJUmwB69g" type="4002" source="_G1jVEE5YEeCu1u0cVaNn3Q" target="_d_D2EEsdEeCsdNjiLCckhw" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8IL_81F3EeC_fOJUmwB69g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8IL_9FF3EeC_fOJUmwB69g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8IL_8VF3EeC_fOJUmwB69g" fontHeight="8"/>
+ <element xmi:type="uml:Generalization" href="MEDB.uml#_8GjBMFF3EeC_fOJUmwB69g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8IL_8lF3EeC_fOJUmwB69g" points="[-10, -6, 0, 238]$[-10, -228, 0, 16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8I7m0FF3EeC_fOJUmwB69g" id="(0.4816753926701571,0.12121212121212122)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8I7m0VF3EeC_fOJUmwB69g" id="(0.24497991967871485,0.6666666666666666)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.uml b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.uml
new file mode 100644
index 00000000000..a863f734a74
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/doc/MEDB.uml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xmi:id="_oIVI8EsZEeCsdNjiLCckhw" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_yl3e0EsZEeCsdNjiLCckhw" name="org.eclipse.papyrus.modelexplorerbasedwidgets">
+ <packagedElement xmi:type="uml:Class" xmi:id="_AMtvAEsaEeCsdNjiLCckhw" name="ModelExplorerBasedContentProvider" clientDependency="_kbJWcEsiEeCsdNjiLCckhw">
+ <ownedComment xmi:id="_0yf00EshEeCsdNjiLCckhw">
+ <body>this is an Encapsulated content provider based on the model explorer on which we can filter wanted meta-classes&#xD;
+ </body>
+ </ownedComment>
+ <generalization xmi:id="_m49WUEsaEeCsdNjiLCckhw" general="_fJ9qUEsaEeCsdNjiLCckhw"/>
+ <ownedAttribute xmi:id="_fJv9AEscEeCsdNjiLCckhw" name="staticContentProvider" type="_ZX7k0EsbEeCsdNjiLCckhw" aggregation="composite" association="_fJv9A0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fJv9AUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fJv9AkscEeCsdNjiLCckhw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_X_DoMEstEeCT26UdVsfwqQ" name="modelContentProvider" type="_9uZdAEsaEeCsdNjiLCckhw" association="_X_MyIEstEeCT26UdVsfwqQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_DoMUstEeCT26UdVsfwqQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_DoMkstEeCT26UdVsfwqQ" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_kbJWcEsiEeCsdNjiLCckhw" name="InterfaceRealization0" supplier="_QaNXsEsiEeCsdNjiLCckhw" client="_AMtvAEsaEeCsdNjiLCckhw" contract="_QaNXsEsiEeCsdNjiLCckhw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1C5sgEsaEeCsdNjiLCckhw" name="ModelExplorerBasedTreeSelectorDialog">
+ <generalization xmi:id="_ZBb68EscEeCsdNjiLCckhw" general="_V5xmcEscEeCsdNjiLCckhw"/>
+ <ownedAttribute xmi:id="_DoIbEEscEeCsdNjiLCckhw" name="modelExplorerBasedContentProvider" type="_QaNXsEsiEeCsdNjiLCckhw" aggregation="composite" association="_DoIbE0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DoIbEUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DoIbEkscEeCsdNjiLCckhw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_NlZ8gEscEeCsdNjiLCckhw" name="modelExplorerBasedViewerFilter" type="_wr_yIEskEeCsdNjiLCckhw" aggregation="composite" association="_NlZ8g0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NlZ8gUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NlZ8gkscEeCsdNjiLCckhw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5j-rAEsaEeCsdNjiLCckhw" name="HierarchicViewerFilter">
+ <generalization xmi:id="_1izwEEskEeCsdNjiLCckhw" general="_wr_yIEskEeCsdNjiLCckhw"/>
+ <ownedAttribute xmi:id="_rsHt4EsbEeCsdNjiLCckhw" name="iHierarchicContentProvider" type="_hjSSIEsaEeCsdNjiLCckhw" association="_rsHt40sbEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsHt4UsbEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsHt4ksbEeCsdNjiLCckhw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Pt9SgEseEeCsdNjiLCckhw" name="modelExplorerBasedContentProvider" type="_hjSSIEsaEeCsdNjiLCckhw" association="_Pt9Sg0seEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pt9SgUseEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pt9SgkseEeCsdNjiLCckhw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9uZdAEsaEeCsdNjiLCckhw" name="ModelContentProvider" clientDependency="_ePDEwEsbEeCsdNjiLCckhw _LiOmAEsrEeCT26UdVsfwqQ">
+ <ownedComment xmi:id="_LR7WoEsfEeCsdNjiLCckhw">
+ <body>This is a modisco content provider on which we can parameter the root element</body>
+ </ownedComment>
+ <generalization xmi:id="_KVFQsEsbEeCsdNjiLCckhw" general="_Gpqu4EsbEeCsdNjiLCckhw"/>
+ <interfaceRealization xmi:id="_ePDEwEsbEeCsdNjiLCckhw" name="InterfaceRealization0" supplier="_ZX7k0EsbEeCsdNjiLCckhw" client="_9uZdAEsaEeCsdNjiLCckhw" contract="_ZX7k0EsbEeCsdNjiLCckhw"/>
+ <interfaceRealization xmi:id="_LiOmAEsrEeCT26UdVsfwqQ" name="InterfaceRealization1" supplier="_ZX7k0EsbEeCsdNjiLCckhw" client="_9uZdAEsaEeCsdNjiLCckhw" contract="_ZX7k0EsbEeCsdNjiLCckhw"/>
+ <ownedOperation xmi:id="_rxgAUEsfEeCsdNjiLCckhw" name="getRootElements"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_rsHt40sbEeCsdNjiLCckhw" name="modelExplorerBasedViewerFilter_iHierarchicContentProvider_0" memberEnd="_rsHt5EsbEeCsdNjiLCckhw _rsHt4EsbEeCsdNjiLCckhw">
+ <ownedEnd xmi:id="_rsHt5EsbEeCsdNjiLCckhw" name="modelExplorerBasedViewerFilter" type="_5j-rAEsaEeCsdNjiLCckhw" association="_rsHt40sbEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsHt5UsbEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsHt5ksbEeCsdNjiLCckhw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_DoIbE0scEeCsdNjiLCckhw" name="modelExplorerBasedTreeSelectorDialog_modelExplorerBasedContentProvider_0" memberEnd="_DoIbFEscEeCsdNjiLCckhw _DoIbEEscEeCsdNjiLCckhw">
+ <ownedEnd xmi:id="_DoIbFEscEeCsdNjiLCckhw" name="modelExplorerBasedTreeSelectorDialog" type="_1C5sgEsaEeCsdNjiLCckhw" association="_DoIbE0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DoIbFUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DoIbFkscEeCsdNjiLCckhw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_NlZ8g0scEeCsdNjiLCckhw" name="modelExplorerBasedTreeSelectorDialog_modelExplorerBasedViewerFilter_0" memberEnd="_NlZ8hEscEeCsdNjiLCckhw _NlZ8gEscEeCsdNjiLCckhw">
+ <ownedEnd xmi:id="_NlZ8hEscEeCsdNjiLCckhw" name="modelExplorerBasedTreeSelectorDialog" type="_1C5sgEsaEeCsdNjiLCckhw" association="_NlZ8g0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NlZ8hUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NlZ8hkscEeCsdNjiLCckhw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Pt9Sg0seEeCsdNjiLCckhw" name="modelExplorerBasedViewerFilter_modelExplorerBasedContentProvider_0" memberEnd="_Pt9ShEseEeCsdNjiLCckhw _Pt9SgEseEeCsdNjiLCckhw">
+ <ownedEnd xmi:id="_Pt9ShEseEeCsdNjiLCckhw" name="modelExplorerBasedViewerFilter" type="_5j-rAEsaEeCsdNjiLCckhw" association="_Pt9Sg0seEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pt9ShUseEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Pt9ShkseEeCsdNjiLCckhw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_QaNXsEsiEeCsdNjiLCckhw" name="IMetaclassFilteredContentProvider">
+ <generalization xmi:id="_0i9ukEsiEeCsdNjiLCckhw" general="_hjSSIEsaEeCsdNjiLCckhw"/>
+ <ownedOperation xmi:id="_h91_0EsdEeCsdNjiLCckhw" name="setMetaClassNotWanted"/>
+ <ownedOperation xmi:id="_jgooQEsdEeCsdNjiLCckhw" name="setMetaClassWanted">
+ <ownedComment xmi:id="_joiAAEsdEeCsdNjiLCckhw">
+ <body>setMetaClassWanted</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_X_MyIEstEeCT26UdVsfwqQ" name="modelExplorerBasedContentProvider_modelContentProvider_0" memberEnd="_X_MyIUstEeCT26UdVsfwqQ _X_DoMEstEeCT26UdVsfwqQ">
+ <ownedEnd xmi:id="_X_MyIUstEeCT26UdVsfwqQ" name="modelExplorerBasedContentProvider" type="_AMtvAEsaEeCsdNjiLCckhw" association="_X_MyIEstEeCT26UdVsfwqQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_MyIkstEeCT26UdVsfwqQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_MyI0stEeCT26UdVsfwqQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GyuDgU5YEeCu1u0cVaNn3Q" name="AdvancedMEbasedTreeSelectorDialog">
+ <generalization xmi:id="_8GjBMFF3EeC_fOJUmwB69g" general="_1C5sgEsaEeCsdNjiLCckhw"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_o7LswEsaEeCsdNjiLCckhw" name="org.eclipse.papyrus.widgets">
+ <packagedElement xmi:type="uml:Class" xmi:id="_fJ9qUEsaEeCsdNjiLCckhw" name="EncapsulatedContentProvider" clientDependency="_l4SjgEsaEeCsdNjiLCckhw">
+ <interfaceRealization xmi:id="_l4SjgEsaEeCsdNjiLCckhw" name="InterfaceRealization0" supplier="_hjSSIEsaEeCsdNjiLCckhw" client="_fJ9qUEsaEeCsdNjiLCckhw" contract="_hjSSIEsaEeCsdNjiLCckhw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_hjSSIEsaEeCsdNjiLCckhw" name="IHierarchicContentProvider">
+ <ownedOperation xmi:id="_nmRn8EsdEeCsdNjiLCckhw" name="isValidValue"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_ZX7k0EsbEeCsdNjiLCckhw" name="IStaticContentProvider"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_V5xmcEscEeCsdNjiLCckhw" name="TreeSelectorDialog"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_fJv9A0scEeCsdNjiLCckhw" name="modelExplorerBasedContentProvider_staticContentProvider_0" memberEnd="_fJv9BEscEeCsdNjiLCckhw _fJv9AEscEeCsdNjiLCckhw">
+ <ownedEnd xmi:id="_fJv9BEscEeCsdNjiLCckhw" name="modelExplorerBasedContentProvider" type="_fJ9qUEsaEeCsdNjiLCckhw" association="_fJv9A0scEeCsdNjiLCckhw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fJv9BUscEeCsdNjiLCckhw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fJv9BkscEeCsdNjiLCckhw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_FXRS4EsbEeCsdNjiLCckhw" name="org.eclipse.papyrus.modelexplorer">
+ <packagedElement xmi:type="uml:Class" xmi:id="_Gpqu4EsbEeCsdNjiLCckhw" name="MoDiscoContentProvider"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="__0mr0EsrEeCT26UdVsfwqQ" name="Eclipse">
+ <packagedElement xmi:type="uml:Class" xmi:id="_wr_yIEskEeCsdNjiLCckhw" name="ViewerFilter"/>
+ </packagedElement>
+ <profileApplication xmi:id="_9G-q0FF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9IBzsFF0EeC_fOJUmwB69g" 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#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9JOGgFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9JqycFF0EeC_fOJUmwB69g" 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#//modelelements"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9Jz8YFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9KQoUFF0EeC_fOJUmwB69g" 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#//blocks"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9KaZUFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9KtUQFF0EeC_fOJUmwB69g" 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#//portandflows"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9K3FQFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9LmsIFF0EeC_fOJUmwB69g" 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#//constraints"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9Lv2EFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9MDYEFF0EeC_fOJUmwB69g" 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#//activities"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9MMiAFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9MgEAFF0EeC_fOJUmwB69g" 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#//allocations"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9MpN8FF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9NF54FF0EeC_fOJUmwB69g" 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 href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9NPq4FF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9NY00FF0EeC_fOJUmwB69g" 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#//interactions"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9NsW0FF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9N1gwFF0EeC_fOJUmwB69g" 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#//statemachines"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_9OIbsFF0EeC_fOJUmwB69g">
+ <eAnnotations xmi:id="_9Ou4oFF0EeC_fOJUmwB69g" 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#//usecases"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+ </profileApplication>
+</uml:Model>
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.properties b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.properties
new file mode 100644
index 00000000000..5821bd655fe
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=org.eclipse.papyrus.modelexplorer.widgets (Incubation)
+providerName=Eclipse Modeling Project \ No newline at end of file
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.xml b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.xml
new file mode 100644
index 00000000000..fbd126de174
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/Activator.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/Activator.java
new file mode 100644
index 00000000000..e11b5087f15
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/Activator.java
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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.modelexplorer.widgets;
+
+import org.eclipse.papyrus.log.LogHelper;
+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.modelexplorer.widgets"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ public static LogHelper log;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ 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/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/AdvancedMETreeDialog.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/AdvancedMETreeDialog.java
new file mode 100644
index 00000000000..e28dbabc109
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/AdvancedMETreeDialog.java
@@ -0,0 +1,158 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Added a lighter constructor
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * this dialog box has the possibility to select by the user interface the kind of wanted meta-class.
+ *
+ * @deprecated You should now use the generic {@link org.eclipse.papyrus.widgets.editors.TreeSelectorDialog}
+ */
+@Deprecated
+public class AdvancedMETreeDialog extends ModelExplorerBasedTreeSelectorDialog {
+
+ protected Label metaclassLabel = null;
+
+ protected Combo combo;
+
+ protected EPackage metaModel;
+
+ protected ArrayList<Object> metaclasses = new ArrayList<Object>();
+
+ /**
+ *
+ * Constructor to display this dialog
+ *
+ * @param parentShell
+ * a shell
+ * @param root
+ * the Eobject that will be the root of the Tree, it can be null
+ * @param wantedEClass
+ * , in order to filter the tree by taking in account only this kind of object
+ * @param metaClassNotWanted
+ * the list of not wanted object (to be pertinent, it has to be a subclass of wantedEclass
+ * @param metaModel
+ * an Epackage that represent the domain model
+ */
+ public AdvancedMETreeDialog(Shell parentShell, EObject root, Object wantedEClass, List<Object> metaClassNotWanted, EPackage metaModel) {
+ super(parentShell, root, wantedEClass, metaClassNotWanted);
+ this.metaModel = metaModel;
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parentShell
+ * a shell
+ * @param metaModel
+ * an Epackage that represent the domain model
+ */
+ public AdvancedMETreeDialog(Shell parentShell, EPackage metaModel) {
+ super(parentShell);
+ this.metaModel = metaModel;
+ }
+
+ @Override
+ public void create() {
+ super.create();
+ //install labels
+ metaclassLabel = new Label(getDialogArea(), SWT.WRAP);
+ metaclassLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ metaclassLabel.setText("Metaclass:");
+ setDescription("Look for " + metaclassLabelProvider.getText(contentProvider.getMetaClassWanted()));
+
+ //install combo
+ combo = new Combo(getDialogArea(), SWT.NONE);
+ combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ combo.addSelectionListener(new SelectionListener() {
+
+ //creation of inner class for the selection
+ public void widgetSelected(SelectionEvent e) {
+ //look for the new wantedEClass
+ int index = combo.getSelectionIndex();
+ contentProvider.setMetaClassWanted(metaclasses.get(index));
+ setDescription("Look for " + metaclassLabelProvider.getText(contentProvider.getMetaClassWanted()));
+ contentProvider.setMetaClassNotWanted(new ArrayList<Object>());
+ if(getViewer() != null) {
+ getViewer().refresh();
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ fillmetaclassList(metaModel);
+ fillMetaclassCombo(metaclasses, new EclassComparator());
+ getShell().pack();
+
+
+ }
+
+ /**
+ * Put into the list metaclasses all element from the Epackage
+ * border effect the list metaclasses is filled
+ *
+ * @param ePackage
+ * that represent the domain model
+ */
+ protected void fillmetaclassList(EPackage ePackage) {
+ metaclasses.clear();
+ for(Iterator<EObject> iterator = ePackage.eContents().iterator(); iterator.hasNext();) {
+ EObject type = iterator.next();
+ if(type instanceof EClass) {
+ metaclasses.add(type);
+ }
+ }
+ }
+
+ /**
+ * take in account all metaclasses and fill the combo by taking account order done by the comparator.
+ * Border effect: the variable combo is filled by all element contained in the parameter metaclasses
+ *
+ * @param metaclasses
+ * the list of metaclasses
+ * @param comparator
+ * a comparator
+ */
+ protected void fillMetaclassCombo(ArrayList<Object> metaclasses, Comparator<Object> comparator) {
+ this.metaclasses = metaclasses;
+ //fill the list of meta-classes
+ combo.removeAll();
+ Collections.sort(metaclasses, comparator);
+ //fill the combo
+ for(Iterator<Object> iterator = metaclasses.iterator(); iterator.hasNext();) {
+ combo.add(metaclassLabelProvider.getText(iterator.next()));
+ }
+
+ }
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EMFObjectLabelProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EMFObjectLabelProvider.java
new file mode 100644
index 00000000000..ac2cd8d0393
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EMFObjectLabelProvider.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Added support for enum literals
+ *******************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * This class handles title label for tabbed properties.
+ *
+ * @author Jerome Benois
+ */
+public class EMFObjectLabelProvider extends AdapterFactoryLabelProvider {
+
+ /** item provider class */
+ private static final Class<?> IItemLabelProviderClass = IItemLabelProvider.class;
+
+ /** list of adapter factories, identified by their Ids */
+ private static Map<String, AdapterFactory> factories = new HashMap<String, AdapterFactory>();
+
+ /** emf item provider facctories */
+ private static final String EXT_FACTORIES = "org.eclipse.emf.edit.itemProviderAdapterFactories"; //$NON-NLS-1$
+
+ /**
+ * Creates a new EMFObjectLabelProvider.
+ */
+ public EMFObjectLabelProvider() {
+ super(new ReflectiveItemProviderAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getText(Object element) {
+ String title = ""; //$NON-NLS-1$
+ if(element instanceof Enumerator) {
+ return ((Enumerator)element).getName();
+ }
+ EObject eObject = getModel(element);
+ IItemLabelProvider itemLabelProvider = getItemLabelProvider(eObject);
+ if(itemLabelProvider != null) {
+ title = itemLabelProvider.getText(eObject);
+ }
+
+ if("".equals(title)) { //$NON-NLS-1$
+ title = super.getText(eObject);
+ }
+
+ return title;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Image getImage(Object element) {
+ Image result = null;
+ EObject eObject = getModel(element);
+ IItemLabelProvider itemLabelProvider = getItemLabelProvider(eObject);
+ if(itemLabelProvider != null) {
+ result = getImageFromObject(itemLabelProvider.getImage(eObject));
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the EObject from the given element
+ *
+ * @param element
+ * the element to adapt
+ * @return the EObject from the given element
+ */
+ private EObject getModel(Object element) {
+ if(element instanceof EObject) {
+ return (EObject)element;
+ }
+
+ EObject eObject = null;
+ if(element != null && element instanceof StructuredSelection) {
+ StructuredSelection selection = (StructuredSelection)element;
+ Object o = selection.getFirstElement();
+ if(o instanceof EObject) {
+ eObject = (EObject)o;
+ } else if(o instanceof IGraphicalEditPart) {
+ IGraphicalEditPart editPart = (IGraphicalEditPart)o;
+ eObject = editPart.resolveSemanticElement();
+ } // try to adapt into EObject
+ else if(o instanceof IAdaptable) {
+ eObject = (EObject)((IAdaptable)o).getAdapter(EObject.class);
+ }
+
+ }
+ return eObject;
+ }
+
+ /**
+ * Returns the item provider for the given object
+ *
+ * @param eObject
+ * the object to display
+ * @return the item label provider for the given eobject
+ */
+ private IItemLabelProvider getItemLabelProvider(EObject eObject) {
+ IItemLabelProvider itemLabelProvider = null;
+ if(eObject != null) {
+ AdapterFactory adapterFactory = getEditFactory(eObject);
+ if(adapterFactory != null) {
+ return (IItemLabelProvider)adapterFactory.adapt(eObject, IItemLabelProviderClass);
+ }
+ }
+ return itemLabelProvider;
+ }
+
+ /**
+ * Gets the edit factory.
+ *
+ * @param eobject
+ * the eobject
+ *
+ * @return the edits the factory
+ */
+ public static AdapterFactory getEditFactory(EObject eobject) {
+ String uri = eobject.eClass().getEPackage().getNsURI();
+ return getFactory(uri);
+ }
+
+ /**
+ * Gets the factory from uri.
+ *
+ * @param uri
+ * the uri
+ *
+ * @return the factory
+ */
+ public static AdapterFactory getFactory(String uri) {
+ AdapterFactory factory = factories.get(uri);
+ if(factory == null) {
+ IConfigurationElement[] extensions = Platform.getExtensionRegistry().getConfigurationElementsFor(EXT_FACTORIES);
+ for(IConfigurationElement e : extensions) {
+ if(uri.equals(e.getAttribute("uri"))) { //$NON-NLS-1$
+ try {
+ factory = (AdapterFactory)e.createExecutableExtension("class"); //$NON-NLS-1$
+ if(factory != null) {
+ factories.put(uri, factory);
+ }
+ } catch (CoreException e1) {
+ // do nothing
+ }
+ }
+ }
+ }
+ return factory;
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EclassComparator.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EclassComparator.java
new file mode 100644
index 00000000000..b5685fb7742
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EclassComparator.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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.modelexplorer.widgets;
+
+import java.util.Comparator;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * comparator EClass by taking in account their names
+ *
+ */
+public class EclassComparator implements Comparator<Object>{
+
+ /**
+ *
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ *
+ */
+ public int compare(Object eclass0, Object eclass1) {
+ //it verify if this isan Eclass
+ if(eclass0 instanceof EClass && eclass1 instanceof EClass){
+ String emp1Name = ((EClass)eclass0).getName();
+ String emp2Name = ((EClass)eclass1).getName();
+ //uses compareTo method of String class to compare names of the Eclasses
+ return emp1Name.compareTo(emp2Name);
+ }
+ else{return 0;}
+ }
+
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EditServiceValidator.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EditServiceValidator.java
new file mode 100644
index 00000000000..05de781484c
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/EditServiceValidator.java
@@ -0,0 +1,66 @@
+/*
+ *
+ */
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.service.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.service.edit.service.IElementEditService;
+
+
+public class EditServiceValidator {
+
+ private EObject editedEObject;
+
+ private EStructuralFeature editedFeature;
+
+ private IElementEditService editingService;
+
+ public EditServiceValidator(EObject editedEObject, EStructuralFeature editedFeature) {
+ this.editedEObject = editedEObject;
+ this.editedFeature = editedFeature;
+
+ if(editedEObject != null) {
+ this.editingService = ElementEditServiceUtils.getCommandProvider(editedEObject);
+ }
+
+ if(this.editingService == null) {
+ // log error service not found...
+ System.err.println("Could not create service for " + EMFCoreUtil.getQualifiedName(editedEObject, true));
+ }
+ }
+
+ public boolean isValidValue(Object element) {
+ // Get semantic element
+ EObject semanticElement = getSemanticElement(element);
+ if((semanticElement == null) && (element != null)) {
+ return false;
+ }
+
+ // Test editing command...
+ SetRequest req = new SetRequest(editedEObject, editedFeature, semanticElement);
+ if((editingService != null) && (editingService.canEdit(req))) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private EObject getSemanticElement(Object object) {
+ EObject adapted = null;
+
+ if(object instanceof EObject) {
+ adapted = (EObject)object;
+
+ } else if(object instanceof IAdaptable) {
+ adapted = (EObject)((IAdaptable)object).getAdapter(EObject.class);
+
+ }
+
+ return adapted;
+ }
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/GraphicalModelExplorerBasedContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/GraphicalModelExplorerBasedContentProvider.java
new file mode 100644
index 00000000000..70cf7123b94
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/GraphicalModelExplorerBasedContentProvider.java
@@ -0,0 +1,556 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Added graphic contributions for the filters
+ * Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - Initial History implementation
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - History integration
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.papyrus.core.services.ServiceException;
+import org.eclipse.papyrus.core.services.ServicesRegistry;
+import org.eclipse.papyrus.core.utils.EditorUtils;
+import org.eclipse.papyrus.modelexplorer.SemanticFromModelExplorer;
+import org.eclipse.papyrus.resource.ModelSet;
+import org.eclipse.papyrus.resource.ModelUtils;
+import org.eclipse.papyrus.widgets.editors.AbstractEditor;
+import org.eclipse.papyrus.widgets.editors.ICommitListener;
+import org.eclipse.papyrus.widgets.editors.StringEditor;
+import org.eclipse.papyrus.widgets.providers.IDetailLabelProvider;
+import org.eclipse.papyrus.widgets.providers.IGraphicalContentProvider;
+import org.eclipse.papyrus.widgets.providers.IHierarchicContentProvider;
+import org.eclipse.papyrus.widgets.providers.PatternViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+
+/**
+ * this is a content provider based on the model explorer on which we can filter wanted meta-classes
+ * It can only filter if wantedMetaclass and metaclassNotWanted are Eclass
+ */
+public class GraphicalModelExplorerBasedContentProvider extends ModelContentProvider implements IMetaclassFilteredContentProvider, IHierarchicContentProvider, IGraphicalContentProvider, ISelectionChangedListener, ICommitListener {
+
+
+ private static final String DIALOG_SETTINGS = GraphicalModelExplorerBasedContentProvider.class.getName();
+
+ /** The not wanted. */
+ protected ArrayList<Object> metaClassNotWantedList = new ArrayList<Object>();
+
+ /** The wanted. */
+ protected Object metaClassWanted = null;
+
+ /**
+ * a bridge to find the semantic element behind an object of the model explorer
+ */
+ protected SemanticFromModelExplorer brige = new SemanticFromModelExplorer();
+
+ protected String historyId;
+
+ /**
+ * The current metaclass viewer filter
+ */
+ protected ViewerFilter currentMetaclassViewerFilter;
+
+ protected ViewerFilter patternFilter;
+
+ private static final String HISTORY_SETTINGS = "History"; //$NON-NLS-1$
+
+ private static final String PREVIOUS_SELECTION = "PreviousSelection";
+
+ protected List<EObject> selectionHistory;
+
+ protected CLabel detailLabel;
+
+ protected Object selectedObject;
+
+ private static final int HISTORY_MAX_SIZE = 5;
+
+ private String currentFilterPattern = ""; //$NON-NLS-1$
+
+ /**
+ * the wanted root of the contentprovider
+ */
+
+ /**
+ * the constructor
+ *
+ * @param semanticRoot
+ * the root that we want to display at top
+ */
+ public GraphicalModelExplorerBasedContentProvider(EObject semanticRoot, String historyId) {
+ super(semanticRoot);
+ this.historyId = historyId;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setMetaClassNotWanted(List<Object> metaClassNotWanted) {
+ metaClassNotWantedList.clear();
+ metaClassNotWantedList.addAll(metaClassNotWanted);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setMetaClassWanted(Object metaClassWanted) {
+ this.metaClassWanted = metaClassWanted;
+ }
+
+
+ /**
+ * get Wanted metaclasse
+ *
+ * @return Eclass that reprensent the wanted metaclass
+ */
+ public Object getMetaClassWanted() {
+ return metaClassWanted;
+ }
+
+ public boolean isValidValue(Object element) {
+
+ //to filter, test if the wanted metaclass is not null
+ if(metaClassWanted != null) {
+ // get the semantic object form the element
+ EObject semanticObject = null;
+
+ if(element instanceof IAdaptable) {
+ semanticObject = (EObject)brige.getSemanticElement(element);
+ }
+ if(element instanceof EObject) {
+ semanticObject = (EObject)element;
+ }
+ //return false for Ereference
+ if(element instanceof EReference || semanticObject instanceof EReference) {
+ return false;
+ }
+ //the semantic object is not null
+ if(semanticObject != null) {
+ //test if this is an Eclass
+ if(metaClassWanted instanceof EClass) {
+ //test if the semanticobject is instance of metaclassWanted
+ // and not an instance of metaclassNotWanted
+ if(((EClass)metaClassWanted).isSuperTypeOf(semanticObject.eClass())) {
+ if(metaClassNotWantedList.size() > 0) {
+ Iterator<Object> iternotwanted = metaClassNotWantedList.iterator();
+ while(iternotwanted.hasNext()) {
+ Object notWanted = iternotwanted.next();
+ if(notWanted instanceof EClass) {
+ if(((EClass)notWanted).isSuperTypeOf(semanticObject.eClass())) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createBefore(Composite parent) {
+ createPatternFilter(parent);
+ }
+
+ protected void createPatternFilter(Composite parent) {
+ StringEditor editor = new StringEditor(parent, SWT.NONE);
+ editor.setLabel("Filter:");
+ editor.setToolTipText("Enter the name of the element you're looking for. You can use * as a wildcard");
+ editor.setValidateOnDelay(true);
+ patternFilter = new PatternViewerFilter();
+ ((PatternViewerFilter)patternFilter).setPattern(currentFilterPattern);
+
+ editor.addCommitListener(new ICommitListener() {
+
+ public void commit(AbstractEditor editor) {
+ String filterPattern = (String)((StringEditor)editor).getValue();
+ ((PatternViewerFilter)patternFilter).setPattern(filterPattern);
+ viewer.refresh();
+ if(!("".equals(filterPattern) || currentFilterPattern.equals(filterPattern))) {
+ Object firstMatch = getFirstMatchingElement(null);
+ if(firstMatch != null) {
+ viewer.reveal(firstMatch);
+ }
+ currentFilterPattern = filterPattern;
+ }
+ }
+
+ });
+
+ List<ViewerFilter> filters = new LinkedList<ViewerFilter>(Arrays.asList(viewer.getFilters()));
+ filters.add(patternFilter);
+ viewer.setFilters(filters.toArray(new ViewerFilter[filters.size()]));
+ }
+
+ /**
+ * Returns the first (encapsulated) element matching the current filters
+ *
+ * @return
+ */
+ protected Object getFirstMatchingElement(Object parent) {
+ //Browse from the root element
+ if(parent == null) {
+ for(Object parentElement : getElements(viewer.getInput())) {
+ Object firstMatch = getFirstMatchingElement(parentElement);
+ if(firstMatch != null) {
+ return firstMatch;
+ }
+ }
+ return null;
+ }
+
+ for(ViewerFilter filter : viewer.getFilters()) {
+ if(!filter.select(viewer, getParent(parent), parent)) {
+ return null;
+ }
+ }
+
+ //Test the current element
+ if(isValidValue(parent)) {
+ return parent;
+ }
+
+ //Browse the child elements
+ for(Object childElement : getChildren(parent)) {
+ Object firstMatch = getFirstMatchingElement(childElement);
+ if(firstMatch != null) {
+ return firstMatch;
+ }
+ }
+
+ //No match found
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void createAfter(Composite parent) {
+ parent.setLayout(new GridLayout(1, false));
+ // createMetaclassFilter(parent); //Disabled
+ createHistory(parent);
+ createDetailArea(parent);
+ }
+
+ /**
+ * Creates a widget referencing the recently selected elements
+ *
+ * @param parent
+ * The composite in which the widget will be created
+ */
+ protected void createHistory(Composite parent) {
+ initSelectionHistory();
+
+ Group historyGroup = new Group(parent, SWT.NONE);
+ historyGroup.setText("Recent selections");
+ historyGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+ historyGroup.setLayout(new GridLayout(1, true));
+
+ // table
+ Table historyTable = new Table(historyGroup, SWT.BORDER | SWT.SINGLE);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ data.heightHint = 70;
+ historyTable.setLayoutData(data);
+ final TableViewer historyViewer = new TableViewer(historyTable);
+ historyViewer.setContentProvider(new HistoryContentProvider());
+ historyViewer.setLabelProvider(viewer.getLabelProvider());
+ historyViewer.setInput(selectionHistory);
+ historyViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection)historyViewer.getSelection();
+ Object selectedObject = selection.getFirstElement();
+ if(selectedObject instanceof EObject) {
+ EObject eObject = ((EObject)selectedObject);
+ // select the element in the model explorer
+ Object containerValue = getContainerValue(eObject);
+ if(containerValue == null) {
+ viewer.setSelection(StructuredSelection.EMPTY);
+ } else {
+ viewer.setSelection(new StructuredSelection(containerValue), true);
+ }
+
+ // update current selection
+ // ModelElementItem item = (ModelElementItem)((IStructuredSelection)viewer.getSelection()).getFirstElement();
+ // if(item != null) {
+ // setCurrentValueItem(item);
+ // }
+ }
+ }
+ });
+ }
+
+ /**
+ * Inits the History
+ */
+ protected void initSelectionHistory() {
+ // read the history in the preferences
+ ServicesRegistry servicesRegistry = EditorUtils.getServiceRegistry();
+ ModelSet modelSet = null;
+ selectionHistory = new ArrayList<EObject>(HISTORY_MAX_SIZE + 1);
+ try {
+ modelSet = ModelUtils.getModelSetChecked(servicesRegistry);
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ return;
+ }
+
+ IDialogSettings historySettings = getDialogSettings().getSection(HISTORY_SETTINGS);
+ if(historySettings != null) {
+ String[] uriHistory = historySettings.getArray(PREVIOUS_SELECTION);
+ // for each element in the list, try to get the EObject by its URI
+ if(uriHistory != null) {
+ for(String uri : uriHistory) {
+ try {
+ EObject object = modelSet.getEObject(URI.createURI(uri), true);
+ if(object != null && !selectionHistory.contains(object)) {
+ selectionHistory.add(object);
+ }
+ } catch (Exception ex) {
+ //Ignore : if the resource doesn't exist anymore, we just skip it
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Creates a widget to filter the tree according to the selected
+ * metaclass.
+ *
+ * @param parent
+ * The Composite in which the widgets will be created
+ */
+ protected void createMetaclassFilter(Composite parent) {
+ if(semanticRoot == null) {
+ return;
+ }
+
+ Composite container = new Composite(parent, SWT.NONE);
+ container.setLayout(new GridLayout(2, false));
+ container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ ResourceSet resourceSet = semanticRoot.eResource().getResourceSet();
+ EcoreUtil.resolveAll(resourceSet);
+
+ Label metamodelLabel = new Label(container, SWT.NONE);
+ metamodelLabel.setText("Metamodel:");
+
+ ComboViewer metamodelViewer = new ComboViewer(container);
+ metamodelViewer.setContentProvider(getMetamodelContentProvider());
+ metamodelViewer.setLabelProvider(new EMFObjectLabelProvider());
+ metamodelViewer.setInput(semanticRoot);
+ metamodelViewer.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ Label metaclassLabel = new Label(container, SWT.NONE);
+ metaclassLabel.setText("Metaclass:");
+
+ final ComboViewer metaclassViewer = new ComboViewer(container);
+ IStructuredContentProvider metaclassProvider = getMetaclassContentProvider();
+ metaclassViewer.setContentProvider(metaclassProvider);
+ metaclassViewer.setLabelProvider(new EMFObjectLabelProvider());
+ metaclassViewer.getCombo().setEnabled(false);
+ metaclassViewer.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ metamodelViewer.setFilters(new ViewerFilter[]{ new MetamodelContentFilter(metaclassProvider) });
+
+ metamodelViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ metaclassViewer.setInput(((IStructuredSelection)event.getSelection()).getFirstElement());
+ metaclassViewer.getCombo().setEnabled(true);
+ }
+ });
+
+ metaclassViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ if(!event.getSelection().isEmpty()) {
+ Object selectedObject = ((IStructuredSelection)event.getSelection()).getFirstElement();
+ List<ViewerFilter> filters = new LinkedList<ViewerFilter>(Arrays.asList(viewer.getFilters()));
+ filters.remove(currentMetaclassViewerFilter);
+ currentMetaclassViewerFilter = getMetaclassViewerFilter(selectedObject);
+ filters.add(currentMetaclassViewerFilter);
+ viewer.setFilters(filters.toArray(new ViewerFilter[filters.size()]));
+ viewer.refresh();
+ }
+ }
+ });
+ }
+
+ /**
+ * Creates a label widget to display detailed information on the
+ * current value (Such as fully qualified name, ...)
+ *
+ * @param parent
+ * The composite in which the widget will be created
+ */
+ protected void createDetailArea(Composite parent) {
+ detailLabel = new CLabel(parent, SWT.BORDER);
+ detailLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ updateDetailLabel();
+ }
+
+ protected IStructuredContentProvider getMetamodelContentProvider() {
+ return new MetamodelContentProvider();
+ }
+
+ protected IStructuredContentProvider getMetaclassContentProvider() {
+ return new MetaclassContentProvider((EClass)this.metaClassWanted, this.metaClassNotWantedList);
+ }
+
+ protected ILabelProvider getLabelProvider() {
+ return new EMFObjectLabelProvider();
+ }
+
+ protected ViewerFilter getMetaclassViewerFilter(Object selectedMetaClass) {
+ return new MetaclassViewerFilter(selectedMetaClass);
+ }
+
+ /**
+ * Returns the dialog settings. Returned object can't be null.
+ *
+ * @return dialog settings for this dialog
+ */
+ protected IDialogSettings getDialogSettings() {
+ IDialogSettings settings = Activator.getDefault().getDialogSettings().getSection(getDialogSettingsIdentifier());
+ if(settings == null) {
+ settings = Activator.getDefault().getDialogSettings().addNewSection(getDialogSettingsIdentifier());
+ }
+ return settings;
+ }
+
+ private String getDialogSettingsIdentifier() {
+ return DIALOG_SETTINGS + "_" + historyId;
+ }
+
+ /**
+ * Stores dialog settings.
+ *
+ * @param settings
+ * settings used to store dialog
+ */
+ protected void storeDialog(IDialogSettings settings, EObject currentValue) {
+
+ if(selectionHistory.contains(currentValue)) {
+ selectionHistory.remove(currentValue);
+ }
+
+ selectionHistory.add(0, currentValue);
+
+ //This should loop only once, unless the history was already oversized
+ while(selectionHistory.size() > HISTORY_MAX_SIZE) {
+ selectionHistory.remove(HISTORY_MAX_SIZE);
+ }
+
+ List<String> uriList = new ArrayList<String>();
+
+ // convert list of EObject into URI string list
+ for(EObject object : selectionHistory) {
+ URI uri = EcoreUtil.getURI(object);
+ uriList.add(uri.toString());
+ }
+
+ IDialogSettings historySettings = settings.getSection(HISTORY_SETTINGS);
+ if(historySettings == null) {
+ historySettings = settings.addNewSection(HISTORY_SETTINGS);
+ }
+ historySettings.put(PREVIOUS_SELECTION, uriList.toArray(new String[uriList.size()]));
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ super.inputChanged(viewer, oldInput, newInput);
+ if(this.viewer != null && newInput != null && this.viewer.getControl() != null && !this.viewer.getControl().isDisposed()) {
+ this.viewer.setFilters(new ViewerFilter[]{ new HierarchicViewerFilter(this) });
+ this.viewer.addSelectionChangedListener(this);
+ }
+ }
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ selectedObject = ((IStructuredSelection)event.getSelection()).getFirstElement();
+ selectedObject = getAdaptedValue(selectedObject);
+ updateDetailLabel();
+ }
+
+ private void updateDetailLabel() {
+ if(detailLabel == null || detailLabel.isDisposed()) {
+ return;
+ }
+ if(selectedObject == null) {
+ detailLabel.setText("");
+ detailLabel.setImage(null);
+ } else {
+ ILabelProvider labelProvider = (ILabelProvider)viewer.getLabelProvider();
+ String description;
+ if(labelProvider instanceof IDetailLabelProvider) {
+ description = ((IDetailLabelProvider)labelProvider).getDetail(selectedObject);
+ } else {
+ description = labelProvider.getText(selectedObject);
+ }
+ detailLabel.setText(description);
+ detailLabel.setImage(labelProvider.getImage(selectedObject));
+ }
+ detailLabel.getParent().getParent().layout();
+ }
+
+ public void commit(AbstractEditor editor) {
+ if(selectedObject instanceof EObject) {
+ storeDialog(getDialogSettings(), (EObject)selectedObject);
+ }
+ }
+
+ @Override
+ public void dispose() {
+ viewer.removeSelectionChangedListener(this);
+ super.dispose();
+ }
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HierarchicViewerFilter.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HierarchicViewerFilter.java
new file mode 100644
index 00000000000..b9b1b7c7948
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HierarchicViewerFilter.java
@@ -0,0 +1,140 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Adaptation to AbstractTreeFilter
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.facet.infra.facet.FacetReference;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.modelexplorer.SemanticFromModelExplorer;
+import org.eclipse.papyrus.widgets.providers.AbstractTreeFilter;
+import org.eclipse.papyrus.widgets.providers.IHierarchicContentProvider;
+
+/**
+ *
+ * This a View Filter that use a IHierarchicContentProvider
+ *
+ */
+public class HierarchicViewerFilter extends AbstractTreeFilter {
+
+ /**
+ * a constructor
+ * @param contentProvider that contains isValidValue() in order to know element to filter
+ */
+ public HierarchicViewerFilter(IHierarchicContentProvider contentProvider) {
+ super();
+ this.contentProvider = contentProvider;
+ }
+
+ /**
+ * the content provider
+ */
+ protected IHierarchicContentProvider contentProvider;
+
+ @Override
+ public boolean hasOneVisibleChild(Viewer viewer, Object element, ITreeContentProvider contentProvider, Set<Object> visitedElements) {
+ //TODO : divide this method
+ if(useCache && visibleChild.containsKey(element)) {
+ return visibleChild.get(element);
+ }
+
+ boolean result = false;
+
+ if(visitedElements.add(element)) {
+ SemanticFromModelExplorer bridge = new SemanticFromModelExplorer();
+
+ EObject semanticObject = null;
+ if(element instanceof IAdaptable) {
+ semanticObject = (EObject)bridge.getSemanticElement(element);
+ }
+ if(element instanceof EObject) {
+ semanticObject = (EObject)element;
+ }
+
+ if(semanticObject != null) {//it contains nothing
+ if(semanticObject instanceof EReference) {
+ //Do not display references that are not containment kind
+ EReference eReference = (EReference)semanticObject;
+ if(isValidReference(eReference)) {
+ //this an ereference maybe it references something that is interesting
+ Object[] children = contentProvider.getChildren(element);
+ for(Object child : children) {
+ if(isVisible(viewer, element, child) || hasOneVisibleChild(viewer, child, contentProvider, visitedElements)) {
+ result = true;
+ }
+ }
+ }
+ }
+
+ if(!result) {
+
+ //it contains something so we have to test children before
+ Iterator<EObject> iter = semanticObject.eAllContents();
+ while(iter.hasNext()) {
+ EObject subEObject = iter.next();
+ if(isVisible(viewer, semanticObject, subEObject) || hasOneVisibleChild(viewer, subEObject, contentProvider, visitedElements)) {
+ result = true;
+ break;
+ }
+ }
+
+ if(!result) {
+ for(EReference eReference : getReferencesToBrowse(semanticObject)) {
+ Object values = semanticObject.eGet(eReference);
+ if(values instanceof EList) {
+ for(Object value : (EList<?>)values) {
+ if(isVisible(viewer, semanticObject, value) || hasOneVisibleChild(viewer, value, contentProvider, visitedElements)) {
+ result = true;
+ break;
+ }
+ }
+ } else if(isVisible(viewer, semanticObject, values) || hasOneVisibleChild(viewer, values, contentProvider, visitedElements)) {
+ result = true;
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ if(useCache) {
+ visibleChild.put(element, result);
+ }
+
+ return result;
+ }
+
+ protected Set<EReference> getReferencesToBrowse(EObject element) {
+ return new HashSet<EReference>();
+ }
+
+ protected boolean isValidReference(EReference eReference) {
+ return eReference.isContainment() || eReference instanceof FacetReference || getReferencesToBrowse(null).contains(eReference);
+ }
+
+ @Override
+ public boolean isVisible(Viewer viewer, Object parentElement, Object element) {
+ return contentProvider.isValidValue(element);
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HistoryContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HistoryContentProvider.java
new file mode 100644
index 00000000000..c1a7f538f06
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/HistoryContentProvider.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * Content provider for the history table
+ */
+public class HistoryContentProvider implements IStructuredContentProvider {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void dispose() {
+ // nothing here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // nothing here
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object[] getElements(Object inputElement) {
+ if(inputElement instanceof List<?>) {
+ return ((List<?>)inputElement).toArray();
+ }
+ return new Object[0];
+ }
+} \ No newline at end of file
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/IMetaclassFilteredContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/IMetaclassFilteredContentProvider.java
new file mode 100644
index 00000000000..b3e7aa56fe2
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/IMetaclassFilteredContentProvider.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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.modelexplorer.widgets;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.widgets.providers.IHierarchicContentProvider;
+
+
+/**
+ * this is a content provider on which we can filter wanted meta-classes
+ * So the method is valid has to take in account the list of metaclasses
+ */
+public interface IMetaclassFilteredContentProvider extends
+ IHierarchicContentProvider {
+ /**
+ * set the list of meta-classes that we do not want to display.
+ * It could be interesting to look for a kind of metaclasses without sub metaclasses.
+ * @param metaClassNotWanted list of metaclasses that are not wanted
+ *
+ */
+ public void setMetaClassNotWanted(List<Object> metaClassNotWanted);
+ /**
+ * a the kind of metaclasses wanted
+ * @param metaClassWanted
+ */
+ public void setMetaClassWanted(Object metaClassWanted);
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassContentProvider.java
new file mode 100644
index 00000000000..af4fbebdce8
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassContentProvider.java
@@ -0,0 +1,89 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * A Content Provider returning all subclasses of the given
+ * class, contained in the input EPackage.
+ *
+ * The metaclassNotWanted are removed from the result.
+ *
+ * @author Camille Letavernier
+ *
+ */
+public class MetaclassContentProvider implements IStructuredContentProvider {
+
+ protected Object type;
+
+ protected List<Object> metaclassNotWanted;
+
+ protected MetaclassContentProvider(Object type, List<Object> metaclassNotWanted) {
+ this.type = type;
+ this.metaclassNotWanted = metaclassNotWanted;
+ }
+
+ public MetaclassContentProvider(EClass type, List<Object> metaclassNotWanted) {
+ this.type = type;
+ this.metaclassNotWanted = metaclassNotWanted;
+ }
+
+ public void dispose() {
+ // Nothing
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ // Nothing
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if(type == null || !(type instanceof EClass)) {
+ return new Object[0];
+ }
+
+ EClass wantedEClass = (EClass)type;
+
+ EPackage ePackage;
+ if(inputElement instanceof EPackage) {
+ ePackage = (EPackage)inputElement;
+ } else {
+ return new Object[0];
+ }
+
+ List<EClass> result = new LinkedList<EClass>();
+
+ for(EClassifier eClassifier : ePackage.getEClassifiers()) {
+ if(eClassifier instanceof EClass) {
+ EClass eClass = (EClass)eClassifier;
+ if(wantedEClass.isSuperTypeOf(eClass)) {
+ result.add(eClass);
+ }
+ }
+ }
+
+ result.removeAll(metaclassNotWanted);
+
+ Collections.sort(result, new EclassComparator());
+
+ return result.toArray();
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassLabelProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassLabelProvider.java
new file mode 100644
index 00000000000..e6eaa9adefc
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassLabelProvider.java
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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.modelexplorer.widgets;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jface.viewers.LabelProvider;
+
+/**
+ *this is label provider to display the name of an Eclass
+ *
+ */
+
+public class MetaclassLabelProvider extends LabelProvider {
+
+ /**
+ *
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ *
+ */
+ public String getText(Object element) {
+ if(element instanceof EClass){
+ return ((EClass)element).getName();
+ }
+ else {
+ return super.getText(element);
+ }
+ }
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassViewerFilter.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassViewerFilter.java
new file mode 100644
index 00000000000..d1eab398d59
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetaclassViewerFilter.java
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.widgets.providers.AbstractTreeFilter;
+
+/**
+ * A class to retain all elements that are instance of the
+ * given metaclass.
+ *
+ * The parent elements of retained elements are also retained.
+ *
+ * @author Camille Letavernier
+ *
+ */
+public class MetaclassViewerFilter extends AbstractTreeFilter {
+
+ protected Object metaclass;
+
+ public MetaclassViewerFilter(Object selectedMetaClass) {
+ this.metaclass = selectedMetaClass;
+ }
+
+ @Override
+ public boolean isVisible(Viewer viewer, Object parentElement, Object element) {
+
+ if(metaclass == null || !(metaclass instanceof EClass)) {
+ return false;
+ }
+
+ EClass eClass = (EClass)metaclass;
+
+ if(element instanceof IAdaptable) {
+ EObject eObject = (EObject)((IAdaptable)element).getAdapter(EObject.class);
+ if(eObject != null) {
+ element = eObject;
+ }
+ }
+
+ if(element instanceof EObject) {
+ return eClass.isInstance(element);
+ }
+
+ return false;
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentFilter.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentFilter.java
new file mode 100644
index 00000000000..c8c546b1c3c
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentFilter.java
@@ -0,0 +1,36 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+/**
+ * A class to filter the empty elements, based on the given content provider
+ *
+ * @author Camille Letavernier
+ */
+public class MetamodelContentFilter extends ViewerFilter {
+
+ private IStructuredContentProvider metaclassProvider;
+
+ public MetamodelContentFilter(IStructuredContentProvider metaclassProvider) {
+ this.metaclassProvider = metaclassProvider;
+ }
+
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ return metaclassProvider.getElements(element).length > 0;
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentProvider.java
new file mode 100644
index 00000000000..89c64229bae
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/MetamodelContentProvider.java
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * A content provider returning all metamodels used by
+ * the input element's resourceSet.
+ *
+ * May be expensive on big models.
+ *
+ * @author Camille Letavernier
+ */
+public class MetamodelContentProvider implements IStructuredContentProvider {
+
+ public void dispose() {
+ //Nothing
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ //Nothing
+ }
+
+ public Object[] getElements(Object inputElement) {
+ EObject input;
+
+ if(inputElement instanceof EObject) {
+ input = (EObject)inputElement;
+ } else {
+ return new Object[0];
+ }
+
+ ResourceSet resourceSet = input.eResource().getResourceSet();
+ EcoreUtil.resolveAll(resourceSet);
+
+ Set<EPackage> reachablePackages = new HashSet<EPackage>();
+
+ for(Resource resource : resourceSet.getResources()) {
+ Iterator<EObject> iterator = resource.getAllContents();
+ while(iterator.hasNext()) {
+ EObject eObject = iterator.next();
+ reachablePackages.add(eObject.eClass().getEPackage());
+ }
+ }
+
+ return reachablePackages.toArray();
+ }
+
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelContentProvider.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelContentProvider.java
new file mode 100644
index 00000000000..4c1338dbf5a
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelContentProvider.java
@@ -0,0 +1,200 @@
+/*****************************************************************************
+ * Copyright (c) 2011 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
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Support for AdaptableContentProvider
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.papyrus.core.utils.EditorUtils;
+import org.eclipse.papyrus.modelexplorer.MoDiscoContentProvider;
+import org.eclipse.papyrus.modelexplorer.SemanticFromModelExplorer;
+import org.eclipse.papyrus.widgets.providers.IAdaptableContentProvider;
+import org.eclipse.papyrus.widgets.providers.IStaticContentProvider;
+
+/**
+ * This is a modisco content provider on which we can parameter the root element
+ */
+public class ModelContentProvider extends MoDiscoContentProvider implements IStaticContentProvider, IAdaptableContentProvider {
+
+ /**
+ * the root element of the tree explorer
+ */
+ protected EObject semanticRoot = null;
+
+
+ /**
+ * The StructuredViewer on which this content provider is applied
+ */
+ protected StructuredViewer viewer;
+
+ public ModelContentProvider(EObject semanticRoot) {
+ this.semanticRoot = semanticRoot;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object[] getElements() {
+ return super.getElements(EditorUtils.getMultiDiagramEditor().getServicesRegistry());
+ }
+
+ @Override
+ public EObject[] getRootElements(Object inputElement) {
+ //if the semantic root is null, we use the default behavior
+ if(semanticRoot == null) {
+ return super.getRootElements(inputElement);
+ } else {
+ //we call the super, to ensure that all variable are initialized
+ super.getRootElements(inputElement);
+ EObject[] eobjectArray = { semanticRoot };
+ return eobjectArray;
+ }
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if(viewer instanceof StructuredViewer) {
+ this.viewer = (StructuredViewer)viewer;
+ } else {
+ this.viewer = null;
+ }
+ }
+
+ public Object getAdaptedValue(Object selection) {
+ if(selection instanceof IAdaptable) {
+ EObject adapted = (EObject)((IAdaptable)selection).getAdapter(EObject.class);
+ if(adapted != null) {
+ return adapted;
+ }
+ }
+ return selection;
+ }
+
+ public Object getContainerValue(Object selection) {
+ if(selection instanceof EObject && viewer != null) {
+ Object root = viewer.getInput();
+ List<Object> rootElements = Arrays.asList(((ITreeContentProvider)viewer.getContentProvider()).getElements(root));
+ List<Object> path = searchPath((EObject)selection, rootElements, new HashSet<Object>());
+ if(!path.isEmpty()) {
+ Object treeElement = path.get(path.size() - 1);
+ return treeElement;
+ }
+ }
+ return selection;
+ }
+
+ /**
+ * look for the path the list of element (comes from the content provider) to go the eObject
+ *
+ * @param eobject
+ * that we look for.
+ * @param wrappers
+ * a list of elements where eobject can be wrapped.
+ * @param visitedElements
+ * this parameters maintains the list of visited semantic elements,
+ * to avoid infinite loops in infinite trees
+ * @return the list of modelElementItem ( from the root to the element that wrap the eobject)
+ */
+ protected List<Object> searchPath(EObject lookFor, List<Object> wrappers, Set<Object> visitedElements) {
+
+ if(lookFor == null) {
+ return Collections.emptyList();
+ }
+ SemanticFromModelExplorer semanticGetter = new SemanticFromModelExplorer();
+ List<Object> path = new ArrayList<Object>();
+
+ for(Object wrapper : wrappers) {
+ Object semanticElement = semanticGetter.getSemanticElement(wrapper);
+ if(visitedElements.contains(semanticElement)) {
+ continue;
+ }
+
+ if (!(semanticElement instanceof EReference)) {
+ // Don't mark references themselves as visited, as they are meta-level singletons that should always be re-visited.
+ visitedElements.add(semanticElement);
+ }
+
+ if(!isVisible(wrapper)) {
+ continue;
+ }
+
+ // Search matches in this level
+ if(!(wrapper instanceof Diagram) && wrapper instanceof IAdaptable) {
+ if(lookFor.equals(semanticElement)) {
+ path.add(wrapper);
+ return path;
+ }
+ }
+
+ // Find childs only for feature container
+ Object[] children = getChildren(wrapper);
+ for(Object treeItem : children) {
+ List<Object> tmppath = new ArrayList<Object>();
+ //can be change into IADAPTER by using new API of modisco
+ Object element = semanticGetter.getSemanticElement(treeItem);
+ if(element != null) {
+ if(element instanceof EReference) {
+ List<Object> childs = new ArrayList<Object>();
+ childs.add(treeItem);
+ tmppath = searchPath(lookFor, childs, visitedElements);
+ }
+
+ else {
+ if(element instanceof EObject) {
+ List<Object> childs = new ArrayList<Object>();
+ childs.add(treeItem);
+ tmppath = searchPath(lookFor, childs, visitedElements);
+ }
+ }
+ }
+
+ // if tmppath contains the wrapped eobject we have find the good path
+ if(tmppath.size() > 0) {
+ if(tmppath.get(tmppath.size() - 1) instanceof IAdaptable) {
+ if(lookFor.equals(semanticGetter.getSemanticElement(tmppath.get(tmppath.size() - 1)))) {
+ path.add(wrapper);
+ path.addAll(tmppath);
+ return path;
+ }
+ }
+ }
+ }
+ }
+
+ return new ArrayList<Object>();
+ }
+
+ protected boolean isVisible(Object wrapper) {
+ for(ViewerFilter filter : viewer.getFilters()) {
+ if(!filter.select(viewer, null, wrapper)) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelExplorerBasedTreeSelectorDialog.java b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelExplorerBasedTreeSelectorDialog.java
new file mode 100644
index 00000000000..159339aaa56
--- /dev/null
+++ b/plugins/views/modelexplorer/org.eclipse.papyrus.modelexplorer.widgets/src/org/eclipse/papyrus/modelexplorer/widgets/ModelExplorerBasedTreeSelectorDialog.java
@@ -0,0 +1,143 @@
+/*****************************************************************************
+ * Copyright (c) 2010 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
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Added a lighter constructor
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.modelexplorer.widgets;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.papyrus.core.utils.EditorUtils;
+import org.eclipse.papyrus.modelexplorer.Activator;
+import org.eclipse.papyrus.modelexplorer.MoDiscoLabelProviderWTooltips;
+import org.eclipse.papyrus.modelexplorer.SemanticFromModelExplorer;
+import org.eclipse.papyrus.widgets.editors.TreeSelectorDialog;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * create a tree dialog box,with a specific researched meta-class. you can also specify the instance of the top element of your tree
+ *
+ * @deprecated You should now use the generic {@link TreeSelectorDialog}, with an {@link EclassModelExplorerBasedContentProvider}
+ */
+@Deprecated
+public class ModelExplorerBasedTreeSelectorDialog extends TreeSelectorDialog {
+
+ protected GraphicalModelExplorerBasedContentProvider contentProvider;
+
+ protected EObject root = null;
+
+ protected LabelProvider metaclassLabelProvider = new MetaclassLabelProvider();
+
+
+ /**
+ * get the label provider used to display metaclasses in the combo
+ *
+ * @return the label provider
+ */
+ public LabelProvider getMetaclassLabelProvider() {
+ return metaclassLabelProvider;
+ }
+
+ /**
+ * set the label provider that will display text in the combo that represent the available list of metaclasses
+ *
+ * @param metaclassLabelProvider
+ */
+ public void setMetaclassLabelProvider(LabelProvider metaclassLabelProvider) {
+ this.metaclassLabelProvider = metaclassLabelProvider;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+
+ @Override
+ protected void setResult(@SuppressWarnings("rawtypes") List newResult) {
+ ArrayList<Object> list= new ArrayList<Object>();
+ SemanticFromModelExplorer bridge= new SemanticFromModelExplorer();
+ Iterator<?> iterator=newResult.iterator();
+ while (iterator.hasNext()) {
+ Object wrappedObject = iterator.next();
+ Object semantic=bridge.getSemanticElement(wrappedObject);
+ if( semantic!=null){
+ list.add(semantic);
+ }
+ }
+
+ super.setResult(list);
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parentShell
+ * a shell
+ * @param root
+ * the root of the tree , can be null
+ * @param wantedEClass
+ * the meta-classes wanted, can be null
+ * @param metaClassNotWanted
+ * , the list of sub meta-classes not wanted, can not be null
+ */
+ public ModelExplorerBasedTreeSelectorDialog(Shell parentShell, EObject root, Object wantedEClass, List<Object> metaClassNotWanted) {
+ super(parentShell);
+ init(root, wantedEClass, metaClassNotWanted);
+ }
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param parentShell
+ * a shell
+ */
+ public ModelExplorerBasedTreeSelectorDialog(Shell parentShell) {
+ super(parentShell);
+ }
+
+ /**
+ * Sets the preferences for initializing this Dialog's ContentProvider.
+ *
+ * @param root
+ * the root of the tree , can be null
+ * @param wantedEClass
+ * the meta-classes wanted, can be null
+ * @param metaClassNotWanted
+ * , the list of sub meta-classes not wanted, can not be null
+ */
+ public void init(EObject root, Object wantedEClass, List<Object> metaClassNotWanted) {
+ this.root = root;
+ contentProvider = new GraphicalModelExplorerBasedContentProvider(root, ""); //$NON-NLS-1$
+ contentProvider.setMetaClassWanted(wantedEClass);
+ contentProvider.setMetaClassNotWanted(metaClassNotWanted);
+ this.setContentProvider(contentProvider);
+ this.setLabelProvider(new MoDiscoLabelProviderWTooltips());
+ this.setInput(EditorUtils.getMultiDiagramEditor().getServicesRegistry());
+ }
+
+ @Override
+ public void create() {
+ // TODO Auto-generated method stub
+ super.create();
+ setDescription("Look for " + metaclassLabelProvider.getText(contentProvider.getMetaClassWanted()));
+ ViewerFilter[] filters = { new HierarchicViewerFilter(contentProvider) };
+ getViewer().setFilters(filters);
+
+ Activator.getDefault().getCustomizationManager().installCustomPainter(getViewer().getTree());
+ }
+}

Back to the top